EXPORTA DADOS DE UM LISTVIEW PARA EXCEL OU PDF
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.
dá uma pesquisada aqui no VBM que tem alguma coisa que talvez te sirva
Isso aqui pode te ajudar
Visual Basic/Excel - Importando e Exportando dados
qqer coias posta ai??
Visual Basic/Excel - Importando e Exportando dados
qqer coias posta ai??
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.
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.
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
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
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
[ô]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
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.
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.
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)
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)
Rotina certa agora, obrigado.
Tópico encerrado , respostas não são mais permitidas