Hai ragione, mi scuso con tutto il forum,
supponiamo che non esista EasyPrint, io ho trovato un esempio che vi posto che potrebbe andare bene, ma l'unico problema è che se una colonna della ListView contenesse tantissimi caratteri mi sfalsa tutte le righe di stampa, penso che possa essere d'aiuto a tanti ma purtroppo non a me perchè una di queste colonne proviene da un campo di una tabella.mdb che è stata imposta come memo, ecco il codice:
Private Sub PrintListView(lvw As ListView)
Const MARGIN = 10
Const COL_MARGIN = 10
Dim ymin As Single
Dim ymax As Single
Dim xmin As Single
Dim xmax As Single
Dim num_cols As Integer
Dim column_header As ColumnHeader
Dim list_item As ListItem
Dim i As Integer
Dim num_subitems As Integer
Dim col_wid() As Single
Dim x As Single
Dim y As Single
Dim line_hgt As Single
xmin = Printer.CurrentX
ymin = Printer.CurrentY
' ******************
' Get column widths.
num_cols = lvw.ColumnHeaders.Count
ReDim col_wid(1 To num_cols)
' Check the column headers.
For i = 1 To num_cols
col_wid(i) = Printer.TextWidth(lvw.ColumnHeaders(i).Text)
Next i
' Check the items.
num_subitems = num_cols - 1
For Each list_item In lvw.ListItems
' Check the item.
If col_wid(1) < Printer.TextWidth(list_item.Text) Then _
col_wid(1) = Printer.TextWidth(list_item.Text)
' Check the subitems.
For i = 1 To num_subitems
If col_wid(i + 1) < Printer.TextWidth(list_item.SubItems(i)) Then _
col_wid(i + 1) = Printer.TextWidth(list_item.SubItems(i))
Next i
Next list_item
' Add a column margin.
For i = 1 To num_cols
col_wid(i) = col_wid(i) + COL_MARGIN
Next i
' *************************
' Print the column headers.
Printer.CurrentY = ymin + MARGIN
Printer.CurrentX = xmin + MARGIN
x = xmin + MARGIN
For i = 1 To num_cols
Printer.CurrentX = x
Printer.Print FittedText( _
lvw.ColumnHeaders(i).Text, col_wid(i));
x = x + col_wid(i)
Next i
xmax = x + MARGIN
Printer.Print
line_hgt = Printer.TextHeight("X")
y = Printer.CurrentY + line_hgt / 2
Printer.Line (xmin, y)-(xmax, y)
y = y + line_hgt / 2
' Print the rows.
num_subitems = num_cols - 1
For Each list_item In lvw.ListItems
x = xmin + MARGIN
' Print the item.
Printer.CurrentX = x
Printer.CurrentY = y
Printer.Print FittedText( _
list_item.Text, col_wid(1));
x = x + col_wid(1)
' Print the subitems.
For i = 1 To num_subitems
Printer.CurrentX = x
Printer.Print FittedText( _
list_item.SubItems(i), col_wid(i + 1));
x = x + col_wid(i + 1)
Next i
y = y + line_hgt * 1.5
Next list_item
ymax = y
' Draw lines around it all.
Printer.Line (xmin, ymin)-(xmax, ymax), , B
x = xmin + MARGIN / 2
For i = 1 To num_cols - 1
x = x + col_wid(i)
Printer.Line (x, ymin)-(x, ymax)
Next i
End Sub
vrclaudio