Notifications
Clear all

Exportar arquivo txt ou PDF ou outra em planilha

7 Posts
2 Usuários
0 Reactions
1,692 Visualizações
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Pessoal,

Necessito que o meu projeto possibilite ao usuário a geração/exportação de relatórios em TXT, PDF e/ou em outra planilha.

Eu encontrei vários tópicos sobre isso, bons exemplos, diga-se de passagem, mas todos os que eu vi, exportam os dados diretamente da sheets/células da planilha.

No meu caso, pretendo que os relatórios sejam oriundos dos dados que encontram-se na listview, pois, só assim, através de pesquisas nessa listview, exportarei os dados que eu quiser.

Alguém sugere algo?

 
Postado : 19/03/2015 6:51 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Eu faria da mesma forma com nos post (exporta da guia para PDF e TXT), pois se eu usasse uma listview e dependesse dela para exportar, simplesmente a guia e a listview seria a mesma...
Ex:

O ideal é carregar a listview usando uma rotina para filtrar na guia, ou seja, se eu mostrar 3 linhas na listview então na minha guia terá o cabeçalho mais as linhas filtradas, após isso faria a exportação para (PDF e TXT), assim com é feito direto da guia ;)

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/03/2015 7:43 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Alexandre,

Eu encontrei um código que caiu como uma luva!

O mesmo pega os dados da listview, lança-os para uma sheets e depois os imprimi.

No Initialize:

Private Sub UserForm_Initialize()


  Set Ws = Worksheets(2)
       Set lstv = Me.lslista
       
end sub 

No botão de imprimir:

Private Sub Image39_Click()

      
     
    If MsgBox("Confirma a impressão?", vbQuestion + vbYesNo, "Confirmação") = vbYes Then
     'Exporta dados para a PlanPrint
     
     Dim i
     
      For i = 1 To Me.lstv.ListItems.Count
        With PlanPrint.Range("a65000").End(xlUp)
            .Offset(1, 0) = Format(lstv.ListItems(i), "0,00")
            .Offset(1, 1) = lstv.ListItems(i).ListSubItems(1)
            .Offset(1, 2) = lstv.ListItems(i).ListSubItems(2)
            .Offset(1, 3) = lstv.ListItems(i).ListSubItems(3)
            .Offset(1, 4) = lstv.ListItems(i).ListSubItems(7)
            .Offset(1, 5) = lstv.ListItems(i).ListSubItems(4)
            .Offset(1, 6) = Format(lstv.ListItems(i).ListSubItems(5), "Currency")
            .Offset(1, 7) = lstv.ListItems(i).ListSubItems(9)
                      
       End With
     Next
        
        With PlanPrint
        'planilha que recebe os dados da listview para serem impressos.
                      
            .Range("a65000").End(xlUp).Offset(2, 0).Value = Date & _
            ". Sistema de Administração Financeira - Lorenzon."
            
        End With
            Dim cont
            
            
            cont = Worksheets("PlanPrint").UsedRange.Rows.Count + 1 'Contas os registros
            PlanPrint.Activate
            PlanPrint.Range("a1:d" & cont).Select 'Seleciona os dados para a impressao
            ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,1,,,TRUE,,FALSE)" 'Imprime
            PlanPrint.Range("a8:d" & cont).Clear 'Limpa os dados
     
    End If

End If


End Sub
 
Postado : 19/03/2015 9:47 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Alexandre,

Eu encontrei um código que caiu como uma luva!

O mesmo pega os dados da listview, lança-os para uma sheets e depois os imprimi.

No Initialize:

Private Sub UserForm_Initialize()


  Set Ws = Worksheets(2)
       Set lstv = Me.lslista
       
end sub 

No botão de imprimir:

Private Sub Image39_Click()

      
     
    If MsgBox("Confirma a impressão?", vbQuestion + vbYesNo, "Confirmação") = vbYes Then
     'Exporta dados para a PlanPrint
     
     Dim i
     
      For i = 1 To Me.lstv.ListItems.Count
        With PlanPrint.Range("a65000").End(xlUp)
            .Offset(1, 0) = Format(lstv.ListItems(i), "0,00")
            .Offset(1, 1) = lstv.ListItems(i).ListSubItems(1)
            .Offset(1, 2) = lstv.ListItems(i).ListSubItems(2)
            .Offset(1, 3) = lstv.ListItems(i).ListSubItems(3)
            .Offset(1, 4) = lstv.ListItems(i).ListSubItems(7)
            .Offset(1, 5) = lstv.ListItems(i).ListSubItems(4)
            .Offset(1, 6) = Format(lstv.ListItems(i).ListSubItems(5), "Currency")
            .Offset(1, 7) = lstv.ListItems(i).ListSubItems(9)
                      
       End With
     Next
        
        With PlanPrint
        'planilha que recebe os dados da listview para serem impressos.
                      
            .Range("a65000").End(xlUp).Offset(2, 0).Value = Date & _
            ". Sistema de Administração Financeira - Lorenzon."
            
        End With
            Dim cont
            
            
            cont = Worksheets("PlanPrint").UsedRange.Rows.Count + 1 'Contas os registros
            PlanPrint.Activate
            PlanPrint.Range("a1:d" & cont).Select 'Seleciona os dados para a impressao
            ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,1,,,TRUE,,FALSE)" 'Imprime
            PlanPrint.Range("a8:d" & cont).Clear 'Limpa os dados
     
    End If

End If


End Sub

Essa linha refere-se a data:

.

Offset(1, 4) = lstv.ListItems(i).ListSubItems(7)

Como eu faço para inserir um Cdate ?

 
Postado : 19/03/2015 9:48 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Segundo sua própria postagem (tempos atrás)... :lol: :lol: use a pesquisa...............
viewtopic.php?t=13792&p=72158

CDate(lstv.ListItems(i).ListSubItems(7).Text)

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/03/2015 9:57 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Eita! É mesmo!

Mas eu ainda acho que existe códigos melhores. O que apresentei acima funciona, mas é muito pesado. Digo isso, pois o meu computador tem 8gbs de memória e é um core i5 e, se eu tiver umas 20 linhas de cadastro na listview, esse código leva cerca de 1 minuto para ser executado.

 
Postado : 19/03/2015 10:23 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Alexandre,

Esse tópico já está resolvido!

Você pode ajudar-me nesse aqui:

viewtopic.php?f=10&t=15051

 
Postado : 19/03/2015 10:54 am