Prova con questa macro:
- Codice: Seleziona tutto
Sub ToManyCols()
Dim I As Long, MaxR As Long, MaxC As Long, SList As Range
Dim J As Long, K As Long, PagN As Long, lEnd As Boolean
'
MaxR = 45 '<<< Le righe compilate per pagina
MaxC = 5 '<<< Le colonne compilate per pagina
Set SList = Range("B2") '<<< La cella dove comincia l'elenco
'
Sheets.Add after:=ActiveSheet
For PagN = 0 To 100
For I = 0 To MaxC - 1
SList.Offset(MaxR * (I + PagN * MaxC), 0).Resize(MaxR, 1).Copy _
Cells(1 + (MaxR + 2) * PagN, I + 1)
If Application.WorksheetFunction.CountA(SList.Offset(MaxR * (I + PagN * MaxC), 0).Resize(MaxR, 1)) = 0 Then
lEnd = True
Exit For
End If
Next I
ActiveSheet.HPageBreaks.Add before:=Cells((MaxR + 2) * (PagN + 1), 1)
If lEnd Then Exit For
Next PagN
End Sub
Va inserita in un Modulo standard del vba; le righe marcate <<< sono da personalizzare come da commento.
Poi va lanciata dopo aver attivato il foglio con il lungo elenco.
Verra' creato un nuovo foglio che conterra' per ogni pagina le righe e le colonne indicate (salvo che la stampante o la carta o le impostazioni di stampa non impongano un limite inferiore)
Ciao