vaya mira...aqui esta un ejemplo de como lo hago mas o menos...
Option Explicit
'Variable para los subitems del listview
Dim Item As ListItem
'A esta función se le envía el control LV a imprimir
Public Sub Imprimir_ListView(ListView As ListView)
Dim i As Integer, AnchoCol As Single, Espacio As Integer, x As Integer
AnchoCol = 0
'Recorremos desde la primer columna hasta la última para almacenar el ancho total
For i = 1 To ListView.ColumnHeaders.Count
AnchoCol = AnchoCol + ListView.ColumnHeaders(i).Width
Next
Espacio = 0
'Encabezado de ejemplo
Printer.Print " Ejemplo para imprimir un control ListView "
Printer.Print
'Imprime una línea
Printer.Line (Printer.CurrentX, Printer.CurrentY)-(Printer.ScaleWidth, Printer.CurrentY)
With ListView
'Acá se imprimen los encabezados del ListView
For i = 1 To .ColumnHeaders.Count
Espacio = Espacio + CInt(.ColumnHeaders(i).Width * Printer.ScaleWidth / AnchoCol)
Printer.Print ListView.ColumnHeaders(i).Text;
Printer.CurrentX = Espacio
Next
Printer.Print
'Imprime una línea
Printer.Line (Printer.CurrentX, Printer.CurrentY)-(Printer.ScaleWidth, Printer.CurrentY)
'Imprime Línea en blanco
Printer.Print
'Este bucle recorre los items y subitems del ListView y los imprime
For i = 1 To .ListItems.Count
Espacio = 0
Set Item = .ListItems(i)
Printer.Print Item.Text;
'Recorremos las columnas
For x = 1 To .ColumnHeaders.Count - 1
Espacio = Espacio + CInt(.ColumnHeaders(x).Width * Printer.ScaleWidth / AnchoCol)
Printer.CurrentX = Espacio
Printer.Print Item.SubItems(x);
Next
'Otro espacio en blanco
Printer.Print
Next
End With
Printer.Print
'Imprime la línea de final de impresión
Printer.Line (Printer.CurrentX, Printer.CurrentY)-(Printer.ScaleWidth, Printer.CurrentY)
Printer.Print
'Texto del pie
Printer.Print " Fin de la impresión "
'Comenzamos la impresión
Printer.EndDoc
End Sub
Private Sub Command1_Click()
'Le enviamos el control ListView como parámetro
Imprimir_ListView ListView1
End Sub
Private Sub Form_Load()
Dim i As Integer
'Le agregamos 4 columnas al listview
With ListView1
.View = lvwReport
.ColumnHeaders.Add , , "Columna 1"
.ColumnHeaders.Add , , "Columna 2"
.ColumnHeaders.Add , , "Columna 3"
.ColumnHeaders.Add , , "Columna 4"
'Agregamos unos items y SubItems
For i = 1 To 20
Set Item = .ListItems.Add(, , i)
Item.SubItems(1) = "Subitem " & i
Item.SubItems(2) = "Subitem " & i
Item.SubItems(3) = "Subitem " & i
Next
End With
Set Item = Nothing
Command1.Caption = " Imprimir ListView "
End Sub
el problema que tengo es que a la hora de imprimir el listview como lo hago con codigo lo que tomo es el valor de la celda en el listview pero no la alineacion...la onda es que no se como hacer para alinear distintas columnas....se me ocurre que con un monton de codigo pero pense que tal vez alguien ya se habia topado con esto....