EXPORTANDO RELATORIO DE VB-6 PARA PLANILHA EXCEL.

DANLEONHART 16/01/2011 22:22:00
#362450
Pessoal,

Tenho um aplicativo em VB-6 onde os dados são armazenados em um Banco de Dados SQLCE, e são visualizados no aplicativo em um FlexGrid...que contém 6 colunas: ID, Nome, Endereço, Telefone, Cidade, UF.

Até aqui beleza... utilizo o Data Report para gerar um relatório de impressão...
gostaria de saber se tem como,
e como faço, para exportar o relatório para uma planilha em Excel...
Sei que no Data Report ele dá a opção de exportar para [Ô].txt[Ô], [Ô].html[Ô] e outros...menos para [Ô].xls[Ô].
CARLOSBINO 17/01/2011 00:11:55
#362456
Postei aqui no VbMania um exemplo que acho que vai te ajudar. Veja no link abaixo

http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8590
DANLEONHART 17/01/2011 01:07:11
#362458
Valeu Carlos !
Vou tentar adaptar .
DANLEONHART 20/01/2011 18:46:05
#362883
Olá...

Criei este script baseado em diversas dicas, funciona na primeira vez, porém se tentar exportar pela segunda vez aparece o seguinte erro:
-------------------------------------------------
[Ô]Run time error [ô]1004[ô]

Method [ô]Range[ô] of object[ô]_Global[ô] failed[Ô]

--------------------------------------------------
e aponta para a linha do scrip:

Private Sub cmd_T_Click()

Dim sql As String
Dim I As Integer
Dim AplExcel As Excel.Application [ô] Aplicação
Dim BokExcel As Excel.Workbook [ô] Arquivo
Dim ShtExcel As Excel.Worksheet [ô] Planilha


Set AplExcel = New Excel.Application
Set BokExcel = AplExcel.Workbooks.Add
Set ShtExcel = BokExcel.Sheets(1)

[ô]define o cabeçalho das células no excel

Range([Ô]A1[Ô]).Value = [Ô]ID:[Ô] <== O ERRO APONTA PARA ESTA LINHA !
Range([Ô]B1[Ô]).Value = [Ô]Nome:[Ô]
Range([Ô]C1[Ô]).Value = [Ô]Cidade:[Ô]
Range([Ô]D1[Ô]).Value = [Ô]País:[Ô]

abb [ô]Conexão com o banco de dados;

Set rs = New ADODB.Recordset [ô]define o objeto recordset
sql = [Ô]SELECT * from base[Ô] [ô]define a instrução sql
rs.Open sql, con [ô]gera o recordset para o sql sobre a conexao definida

[ô] Preenche o restante das células com dados do RecordSet;
I = 2
If Not rs.EOF Then
Do Until rs.EOF
Range([Ô]A[Ô] & I).Value = rs(0)
Range([Ô]B[Ô] & I).Value = rs(1)
Range([Ô]C[Ô] & I).Value = rs(2)
Range([Ô]D[Ô] & I).Value = rs(3)
rs.MoveNext

I = I + 1
Loop

End If
AplExcel.Visible = True
Set AplExcel = Nothing
Set BokExcel = Nothing
Set ShtExcel = Nothing

End Sub



Detalhes:

- Isso acontece sempre na segunda vez que tenta-se abrir o RS no Excel;

-Notei também que mesmo depois de fechar a Planilha recém aberta, ainda continua no Gerenciador de Tarfefas do Windows (TaskMgr), isso ocupa memória do sistema correto ?!
Até tentei burlar isso utilizando o [Ô]Taskkill[Ô], mas o problema é que fecha todas as planilhas que estiverem abertas...
NLSOLUCOES 20/01/2011 19:06:39
#362885
Resposta escolhida
[Ô][txt-color=#007100]Exportando .mdb para doc , xls, ppt , xml e htm[/txt-color]l[Ô]

Acho que esse link do macoratti é o melhor
http://www.macoratti.net/vb6_exp.htm
[]'s
XXXANGELSXXX 20/01/2011 20:30:43
#362894
veja so.. o erro que vc citou.. e porque o arquivo ja existe de duas uma, ou voce da o kill no arquivo, ou utilize isso http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8717, eu tenho uma dll para exportar para excel, ja comentada.
XXXANGELSXXX 20/01/2011 20:32:32
#362895
veja so.. o erro que vc citou.. e porque o arquivo ja existe de duas uma, ou voce da o kill no arquivo, ou utilize isso http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8717, eu tenho uma dll para exportar para excel, ja comentada.
DANLEONHART 20/01/2011 21:43:58
#362901
Seria mais fácil dar o Kill, mas ele não existe...é temporário...fica apenas na memória...sua Sub + DLL são interessante, mas não conseguí colocá-los em meu projeto...fiz referência a sua DLL e coloquei a Sub em um botão...sem sucesso... apareceu [Ô]Tipos não definidos[Ô]...
DANLEONHART 20/01/2011 22:17:11
#362902
@ NLSOLUCOES

Cara, o exemplo do Macoratti é ótimo, mas tem um objeto que não está definido:
Tem uma parte:
pb.Max = rs.RecordCount
pb.Value = 0
Screen.MousePointer = vbHourglass
Set wb = exc.Workbooks.Add


O [Ô]pb[Ô] é apontado como [Ô]Objeto Requerido[Ô]...

LUIZCOMINO 20/01/2011 22:24:26
#362903
pb é a progressbar, troque pelo nome da sua progressbar
LUIZCOMINO 20/01/2011 22:26:13
#362904
ou retire as 2 linhas,caso você não esteja usando uma progressbar

pb.Max = rs.RecordCount
pb.Value = 0
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas