EXPORTA DADOS DE UM LISTVIEW PARA EXCEL OU PDF

MILTONSILVA94 13/07/2015 16:50:11
#448775
Preciso de informações para pegar dados de um listview e após eu acionar um botão faça a exportação salavando em uma tabela excel ou até mesmo pdf porém com os dados que foram listados no Listview.
DAMASCENO.CESAR 13/07/2015 16:59:49
#448777
dá uma pesquisada aqui no VBM que tem alguma coisa que talvez te sirva
ALVAROVB2009 13/07/2015 17:00:16
#448778
Isso aqui pode te ajudar

Visual Basic/Excel - Importando e Exportando dados
qqer coias posta ai??
MILTONSILVA94 15/08/2015 11:54:02
#450022
Por enquanto única rotina que consegui montar foi a que [ô]abre a aplicação excel[ô], pois não encontrei nenhuma matéria que me ajude a entender como consigo criar as rotinas necessárias de um ListView para um Excel.
Por Exemplo: Tenho uma tabela [ô]Perfis, no listview só vai mostrar a informação que foi puxada da tabela [ô]descricao_perfil[ô] da tabela Perfis. Neste campo me trouxe um retorno de 35 registros, daí quero montar algo que ao clicar em um botão e com isso fazer copiar estas informações para o Excel...
Quem tiver idéias, favor colocar aqui.
DS2T 15/08/2015 15:15:58
#450030
Resposta escolhida
A partir do momento que você tem o o objeto do Excel Workbook aberto, basta selecionar o índice do Worksheet que você quer.

SeuWorkBookJaAberto.Worksheets(1)... ou até mesmo pelo nome: SeuWorkBookJaAberto.Worksheets([Ô]suaPlanilha[Ô])

A partir daí você vai ter o acesso a qualquer Range dessa planilha, através da propriedade Range.

Aí não importa mais sua fonte de dados, se é um datagrid, listview ou um recordset... basta indicar os valores que você quer, para a célula desejada.

Exemplo:

seuWorksheet.Range([Ô]A1[Ô]).Value = [Ô]DS2T é gatinho[Ô]

Apesar de ser apenas um exemplo, essa string condiz com a realidade...

é isso aí... pelo que me lembre...

Abraços
MILTONSILVA94 15/08/2015 16:26:35
#450035
Achei aqui e a rotina que realmente eu preciso é a seguinte, caso alguém se interesse está abaixo:

[ô]Apenas mudar o nome do listview
Private Sub ExportaParaoExcel_Click()

Dim objExcel As New Excel.Application
Dim bkWorkBook As Workbook
Dim shWorkSheet As Worksheet
Dim i As Integer
Dim j As Integer

Set objExcel = New Excel.Application
Set bkWorkBook = objExcel.Workbooks.Add
Set shWorkSheet = bkWorkBook.ActiveSheet

For i = 1 To lvwLista.ColumnHeaders.Count
shWorkSheet.Cells(1, Chr(64 + i)) = lvwLista.ColumnHeaders(i)
Next

For i = 1 To lvwLista.ListItems.Count
shWorkSheet.Cells(i + 2, [Ô]A[Ô]) = lvwLista.ListItems(i).Text
For j = 2 To lvwLista.ColumnHeaders.Count
shWorkSheet.Cells(i + 2, Chr(64 + j)) = lvwLista.ListItems(i).SubItems(j - 1)
Next
Next

objExcel.Visible = True

End Sub
MILTONSILVA94 25/08/2015 07:40:58
#450459
Tenho um tabela dentro do sistema que contém 36 colunas, o mesmo gera corretamente os dados no listview, porém se eu coloco pra exportar para excel de acordo com o código abaixo, ele me apresenta o seguinte erro da imagem:

Private Sub RotinaExcel()

Dim objExcel As New Excel.Application
Dim bkWorkBook As Workbook
Dim shWorkSheet As Worksheet
Dim i As Integer
Dim j As Integer

Set objExcel = New Excel.Application
Set bkWorkBook = objExcel.Workbooks.Add
Set shWorkSheet = bkWorkBook.ActiveSheet

For i = 1 To lvwLista.ColumnHeaders.Count
shWorkSheet.Cells(1, Chr(64 + i)) = lvwLista.ColumnHeaders(i)
Next

For i = 1 To lvwLista.ListItems.Count
shWorkSheet.Cells(i + 2, [Ô]A[Ô]) = lvwLista.ListItems(i).Text
For j = 2 To lvwLista.ColumnHeaders.Count
shWorkSheet.Cells(i + 2, Chr(64 + j)) = lvwLista.ListItems(i).SubItems(j - 1)
Next
Next

objExcel.Visible = True

End Sub

O erro ocorre apenas neste formulário devido ao mesmo ter várias colunas dentro da tabela.
DS2T 25/08/2015 15:46:51
#450479
Isso acontece porque você tá usando o índice alfanumérico do Excel pra referenciar. A partir daí, começa a dar problema quando ele chega na coluna [Ô]Z[Ô], porque a próxima coluna já vai ser [Ô]AA[Ô], [Ô]AB[Ô]... etc. E seu código não está tratando isso.

shWorkSheet.Cells(i + 2, Chr(64 + j)) = lvwLista.ListItems(i).SubItems(j - 1)

Esse CHR que converte para [Ô]A[Ô], [Ô]B[Ô]... etc

Tente usar apenas o indice numérico:

shWorkSheet.Cells(i + 2, j) = lvwLista.ListItems(i).SubItems(j - 1)


MILTONSILVA94 25/08/2015 16:27:19
#450482
Rotina certa agora, obrigado.
Tópico encerrado , respostas não são mais permitidas