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?
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
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
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 subNo 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 ?
Boa tarde!!
Segundo sua própria postagem (tempos atrás)...
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
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.
Alexandre,
Esse tópico já está resolvido!
Você pode ajudar-me nesse aqui: