IMPORTAR DADOS PLANILHA EXCEL

OSMARSTELLE 27/07/2012 04:56:09
#406689
Bom dia amigos estou com uma dificuldade em importar os dados de uma planilha do excel que ja esteja aberta. Se fosse para capturar os dados e em seguida fechar eu usaria o codigo abaixo, mas a planilha fica aberta o tempo todo,(não posso fecha-la e em seguida abrir, pois os dados são atualizados por um programa externo direto no excel) e no meu relatorio eu tenho uma rotina que grava as informações a 10 minutos.mas sempre fica abrindo uma nova instancia no excel.

Private Sub Command1_Click()

Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
Set xlw = xl.Workbooks.Open(App.Path & [Ô]\coluna.xls[Ô])
xlw.Sheets([Ô]Plan1[Ô]).Select
txtdata.Text = xlw.Application.Cells(1, 1).Value
txthora.Text = xlw.Application.Cells(1, 2).Value


xlw.Close True
Set xlw = Nothing
Set xl = Nothing
End Sub

Att
Obrigado
Osmar
MITSUEDA 27/07/2012 07:51:37
#406690
Resposta escolhida
Tente abrir como somente leitura.

Set xlw = xl.Workbooks.Open(Filename:=App.Path & [Ô]\coluna.xls[Ô], ReadOnly:=[txt-color=#0000f0]True[/txt-color])

Ou assim:

Set xlw = xl.Workbooks.Open(App.Path & [Ô]\coluna.xls[Ô], , True)


Abraço
KERPLUNK 27/07/2012 09:07:26
#406692
Se a planilha estiver com formato [Ô]tabela[Ô], tipo, dados em linhas como se fosse uma tabela mesmo, você pode abrir como se fosse um banco de dados normal, com uma conexão ADO...
OSMARSTELLE 27/07/2012 15:09:52
#406727
Boa tarde, obrigado pelo retorno, Mitsueda infelizmente nao funcionou abrindo como leitura, na primeira vez que roda funciona, na proxima da erro de automação,
Kerplunk, os dados estão em locais especificos na planilha nao esta no formato tabela.

Obrigado
MITSUEDA 30/07/2012 13:32:47
#406859
Estranho...

Essa rotina roda muitas vezes?

Porque eu percebi que vc não está fechando o application Excel, se vc roda muitas vezes essa rotina vc estará abrindo varias instacias Excel...

Talvez vc não possa fechar seu application excel por outros motivos, então o interessante é capturar uma instancia aberta usando GetObject([Ô]Excel.Application[Ô])

xlw.Close True
xl.QuitSet xlw = Nothing
Set xl = Nothing

Abraço
OSMARSTELLE 30/07/2012 20:05:43
#406900
Ola Fabio, quero agradecer muito a vc, pela dica do [Ô]GetObject([Ô]Excel.Application[Ô])[Ô], consegui fazer o sistema rodar sem problemas.

Muito obrigado

Abraços

Osmar
Tópico encerrado , respostas não são mais permitidas