Notifications
Clear all

Listview Limite de Colunas para Exporta Dados

4 Posts
3 Usuários
0 Reactions
1,651 Visualizações
 omar
(@omar)
Posts: 0
New Member
Topic starter
 

Bom dia!

Pessoal, tenho uma dúvida se alguém conseguir sanar agradeço. O código abaixo exporta os dados do listview para o excel, o problema é que este código somente somente funciona para listview com até 25 ou 26 colunas, mais que isso da erro o erro abaixo:

Erro 13_Tipos incompativeis na linha: shWorkSheet.Cells(1, Chr(64 + i)) = ListView1.ColumnHeaders(i)

Alguém saberia informar se existe limite de colunas para exportar ou se a linha acima esta com informação divergente?

**Código Completo:

Private Sub cmdexportexcel_Click()

'Botão Exportar listagem

Application.ScreenUpdating = False

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 ListView1.ColumnHeaders.Count
        shWorkSheet.Cells(1, Chr(64 + i)) = ListView1.ColumnHeaders(i)
    Next

    For i = 1 To ListView1.ListItems.Count
        shWorkSheet.Cells(i + 1, "A") = ListView1.ListItems(i).text
        For j = 2 To ListView1.ColumnHeaders.Count
            shWorkSheet.Cells(i + 1, Chr(64 + j)) = ListView1.ListItems(i).SubItems(j - 1)
        Next
    Next
    
    objExcel.Visible = True
   
Application.ScreenUpdating = True

End Sub

Desde já agradeço!

Omar

 
Postado : 07/03/2017 7:42 am
(@hronconi)
Posts: 314
Reputable Member
 

Pelo tipo do erro você está com problemas relacionados aos tipos dos dados que está querendo atribuir. Exemplo quero atribuir o valor 1223 (texto) em um campo ou variável inteiro

 
Postado : 07/03/2017 8:07 am
(@pfarias)
Posts: 0
New Member
 

O erro está no CODE abaixo:

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

For i = 1 To ListView1.ListItems.Count
shWorkSheet.Cells(i + 1, "A") = ListView1.ListItems(i).text
For j = 2 To ListView1.ColumnHeaders.Count
shWorkSheet.Cells(i + 1, Chr(64 + j)) = ListView1.ListItems(i).SubItems(j - 1)
Next
Next

Ocorre que ele usa as letras da colunas como referencia. O ideal é usar o número da coluna.

Então alterar Chr(64 + i) e Chr(64 + j) por seus respectivos contadores.
Abaixo segue o código completo com a alteração

Private Sub cmdexportexcel_Click()

'Botão Exportar listagem

Application.ScreenUpdating = False

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 ListView1.ColumnHeaders.Count
    shWorkSheet.Cells(1, i) = ListView1.ColumnHeaders(i)
Next

For i = 1 To ListView1.ListItems.Count
    shWorkSheet.Cells(i + 1, "A") = ListView1.ListItems(i).Text
    
    For j = 2 To ListView1.ColumnHeaders.Count
        shWorkSheet.Cells(i + 1, j) = ListView1.ListItems(i).SubItems(j - 1)
    Next
Next

objExcel.Visible = True

Application.ScreenUpdating = True

End Sub
 
Postado : 07/03/2017 8:15 am
 omar
(@omar)
Posts: 0
New Member
Topic starter
 

pfarias,

Deu certo. Muito Obrigado!

 
Postado : 08/03/2017 5:47 pm