Vídeo recomendado
CONEXÃO ADO - OLEDB PARA EXCEL 2007
CONEXÃO ADO - OLEDB PARA EXCEL 2007
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
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
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007
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
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]
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
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
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007
Jack,
abraços
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.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.
abraços
Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007
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
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
-
- Acabou de chegar
- Mensagens: 1
- Registrado em: Seg Abr 02, 2012 9:59 am
Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007
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
Obrigado.
Moacir Gouveia
Re: CONEXÃO ADO - OLEDB PARA EXCEL 2007
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
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