sábado, 7 de março de 2009

A partir de uma planilha, ler dados de outra via ADO

Arquivos XLS não são multiusuários por natureza.
O Excel até permite o compartilhamento, via Ferramentas > Compartilhar Pasta de Trabalho, mas são tantos detalhes que precisam ser observados que o usuário precisa se adaptar ao recurso, sendo que na verdade o recurso deveria facilitar a vida dele.
Recentemente precisei fazer um sistema onde ocorria a leitura de dados de vários XLS's para gravar num outro XLS e este por sua vez, poderia estar aberto no momento da gravação.
Depois de pesquisar, escrever muido código e testar bastante, cheguei a conclusão de que a melhor forma era utilizar o Active Data Objects.
Segue um exemplo de código para leitura de dados de um arquivo XLS a partir de outro.
O melhor de tudo é que podemos utilizar a sintaxe SQL nos comandos, com algumas poucas adaptações é claro, que fará com que os desenvolvedores de banco de dados se sintam bem à vontade.


Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim ssql As String
Sub teste()
'cria uma conexão ADO
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset

'Na string de conexão, o caracter "aspas duplas" é substituído pelo
'correspondente em ASCII -> Chr(34)
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Planilha.xls" & _
";Extended Properties=" & Chr(34) & "Excel 8.0;HDR=Yes" & Chr(34)

'abre o recordset pelo nome da planilha
'Obs.:
'- No comando SELECT o nome da planilha vai entre chaves e
'com um "$" no final do nome

Set rst = cnn.Execute("Select * from [plan1$]")

MsgBox rst(0)

rst.Close
cnn.Close

Set rst = Nothing
Set cnn = Nothing

End Sub

Nenhum comentário:

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.