ACESSANDO O EXCEL VIA VB 6

CARLOSBINO 24/11/2009 07:56:06
#328450
Tenho uma aplicação que utiliza como base de dados o Access. Porém, quando quero fazer um relatório dos produtos vendidos precisso exportar para o Excel e isto está gerando uma dor de cabeça. O Código que utilizo é o seguinte:

Set EApp = CreateObject([Ô]excel.application[Ô])
Set EwkB = EApp.Workbooks.Add
Set EwkS = EwkB.Sheets(1)
EApp.Application.Visible = True
Range(ak & 1).FormulaR1C1 = Código
Range(b & 1).FormulaR1C1 = Descrição
Range(c & 1).FormulaR1C1 = Quantidade


Ele abre o Excel e exibe relatório, porém, se eu precisar gerar outro relatório utilizando este código ela dá a seguinte mensagem de erro:
Erro número 1004
Error en el método [ô]Range[ô] del objeto [ô]_Global[ô]


as variáveis Código, Descrição e Quantidade nem sempre recebem valores tirados da base de dados.
MARCOSLING 24/11/2009 09:17:45
#328453
Resposta escolhida
Acho que vc está instanciando os objetos e não está destruindo completamente.
CARLOSBINO 24/11/2009 09:39:14
#328458
Como faço isso?
MARCOSLING 24/11/2009 15:01:11
#328503
Depois que vc cria uma instancia do excel, workbook e worksheet, vc precisa destruir essas instâncias.

o codigo está em vb.net, mas é fácil entender

veja um trecho:

 
Dim ExcelApp As Excel.Application
Dim ExcelWb As Excel.Workbook
Dim ExcelWs As Excel.Worksheet

ExcelApp = New Excel.Application
ExcelWb = ExcelApp.Workbooks.Add
ExcelWs = ExcelWb.Worksheets(1)

[ô]preenche e salva a planilha

[ô]fecha a instancia do excel ----------------------------------------------------------------
ExcelWb.Close()
ExcelApp.Quit()

[ô]destroi as variaveis do excel ----------------------------------------------------------------
ExcelApp = Nothing
ExcelWb = Nothing
ExcelWs = Nothing
CARLOSBINO 24/11/2009 16:08:13
#328512
Fiz o que você sugeriu e continua dando a mesma mensagem de erro. Vamos fazer o seguinte, utilizando este código que vocÊ sugeriu, como faço para preencher a planilha do Excel?
MARCOSLING 24/11/2009 17:54:31
#328515
Humm... agora que prestei atenção no seu código... o seu problema realmente é o preenchimento das células.

lá vai:

  

Dim ExcelApp As Excel.Application
Dim ExcelWb As Excel.Workbook
Dim ExcelWs As Excel.Worksheet

ExcelApp = New Excel.Application
ExcelWb = ExcelApp.Workbooks.Add
ExcelWs = ExcelWb.Worksheets(1)

[ô]preenche
ExcelWs.Cells(1, 1).Value = [Ô]Linha1 Coluna1[Ô]
ExcelWs.Cells(1, 2).Value = [Ô]Linha1 Coluna2[Ô]
ExcelWs.Cells(2, 1).Value = [Ô]Linha2 Coluna1[Ô]
ExcelWs.Cells(2, 2).Value = [Ô]Linha2 Coluna2[Ô]

[ô]salva a planilha
ExcelWb.SaveAs([Ô]c:\exemplo.xls[Ô])

[ô]fecha a instancia do excel ----------------------------------------------------------------
ExcelWb.Close()
ExcelApp.Quit()

[ô]destroi as variaveis do excel ----------------------------------------------------------------
ExcelApp = Nothing
ExcelWb = Nothing
ExcelWs = Nothing

CARLOSBINO 24/11/2009 18:55:08
#328517
Marcosling, valeu por toda a atenção!!!! O código funcionou direitinho ao trocar o métodos Range por ExcelWs.Cells.
Tópico encerrado , respostas não são mais permitidas