Página 1 de 1

CONEXÃO ADO - OLEDB PARA EXCEL 2007

Enviado: Sáb Dez 04, 2010 11:25 am
por JJACKLS
Olá!

Estou contruindo uma modelo de cadastro de cliente com base no modelo criado pelo Tomás, mas não estou conseguindo carregar as informações no formulário de pesquisa.

Estou montado o meu modelo no Excel 2007, de forma que, construí os forms num arquivo .XLSM (habilitado para Macros) e planilha de dados num arquivo .XLSX.

De forma que, por se tratar de uma versão diferente da que o modelo orginal foi construído, a conexão ADODB não esteja funcionando para mim.

Peço a ajuda de você em me indicar qaul o código indicado para inciar a conexão no caso do Excel 2007, pois acredito que o código abaixo sirva somente para o Excel 2003:

Set conn = New ADODB.Connection
With conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.ConnectionString = "Data Source=" & caminhoArquivoDados & ";Extended Properties=Excel 8.0;"
.Open
End With

sql = "SELECT * FROM [cadClientes$]"

Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
With rst
.ActiveConnection = conn
.Open sql, conn, adOpenForwardOnly, _
adLockBatchOptimistic
End With

Set rst.ActiveConnection = Nothing

conn.Close


Além das alterações no código, quais referências na biblioteca eu devo habilitar para utilizar o Excel 2007?

Desde já, agradeço a ajuda. Saudações,

Jackson Silva

Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007

Enviado: Dom Dez 05, 2010 9:07 pm
por Mauro Coutinho
Jackson, não sou o mais indicado para esta ajuda por não usar o excel 2007, mas em um outro forum que participo, tinha uma msg parecida ref a conexão no 2007, que foi respondida pelo José Lobo, e seria o seguinte :

Com o Office 2007 houve modificações na forma de acessar dados de e para o excel ou access.
Nos endereços abaixo encontramos algumas referências importantes:

http://www.microsoft.com/downloads/en/d ... laylang=en
http://www.connectionstrings.com/excel-2007

No site da MS está disponível um novo provedor
ACE driver
para ser utilizado no lugar do
JET

A string de conexão seria:
Set oConn = CreateObject("ADODB.Connection")
oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\MyExcel2007File.xlsx;
Extended Properties=""Excel 12.0 Xml;
HDR=YES"";"
oConn.Open

Outro ponto que foi discutido refere-se à importação do cabeçalho do arquivo excel.

Arquivo excel COM linha de cabeçalho:
Data Source =c:\myExcelFile.xlsx;HDR=yes;Format=xlsx;

Arquivo excel SEM linha de cabeçalho:
Data Source =c:\myExcelFile.xlsx;HDR=no;Format=xlsx;

Como podemos observar, essa configuração é feita na string de conexão.

Quanto aos tipos de arquivos excel 2007, a linha abaixo define:

Data Source=c:\myFolder\myExcel2007file.xlsx
Data Source=c:\myFolder\myBinaryExcel2007file.xlsb
Data Source=c:\myFolder\myExcel2007file.xlsm

O arquivo excel pode ser tratado como texto, com o flag:
IMEX=1

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;
HDR=YES;
IMEX=1";

Melhores esclarecimentos nos endereços mencionados.

FOnte: http://br.dir.groups.yahoo.com/group/Ex ... sage/73094

Veja se ajuda.

[]s

Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007 [Resolvido]

Enviado: Seg Dez 06, 2010 12:42 pm
por JJACKLS
Mauro,

Após uma vasta pesquisa na internet, consegui resolver o meu problema. Foi necessário baixar o driver para canexão OLE DB no site que você indicou além da alteração no código, conforme abaixo:

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String

Set conn = New ADODB.Connection

conn.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & caminhoArquivoDados & ";" & _
"Extended Properties=Excel 12.0"
conn.Open


sql = "SELECT * FROM [CadClientes$]"

Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
With rst
.ActiveConnection = conn
.Open sql, conn, adOpenForwardOnly, _
adLockBatchOptimistic
End With

Set rst.ActiveConnection = Nothing

' Fecha a conexão.
conn.Close


Agradeço a atenção e colaboração e espero que com essas informações eu possa ajudar outros programadores que encontrarem a mesma dificuldade em programar com EXCEL 2007.

Saudações,

Jack

Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007

Enviado: Seg Dez 06, 2010 7:55 pm
por Mauro Coutinho
Jack,
Agradeço a atenção e colaboração e espero que com essas informações eu possa ajudar outros programadores que encontrarem a mesma dificuldade em programar com EXCEL 2007.
Eu que tenho a agradecer pelo Retorno, e a sua colaboração em compartilhar com o Forum a solução elaborada por você enriquecendo ainda mais o nosso Forum.

abraços

Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007

Enviado: Qua Jan 18, 2012 2:50 pm
por macburn
Boa tarde pessoal,

Gostaria de parabenizar os nobre colegas pela grande contribuição que os mesmos sempre nos fazem.
Funcionou como uma luva pessoal essa última dica.
Meus sinceros agradecimentos.

Abraços

Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007

Enviado: Seg Abr 02, 2012 11:02 am
por Moacir Gouveia
Olá bom dia, tópico meio antigo, mas se for colocar esse back end com os dados e tipo 10 planilhas cadastrando e consultando teria problemas? Resumindo, mais usuários de uma vez...

Obrigado.

Moacir Gouveia

Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007

Enviado: Seg Abr 02, 2012 5:32 pm
por webmaster
Moacir,

Até hoje não ouvi falar de um limite conhecido, mas pode ser OLEDB, assumir o mesmo limite do Access, que é de 255. Mas faria um teste para ter certeza. No fim das contas, a intenção de fazer o banco separado é bem essa.

Abraços