Le cartelle di lavoro possono contenere tutti i tipi di dati. Se hai una cartella di lavoro che include un numero di fogli di lavoro, ognuno contenente solo una piccola quantità di dati, potresti chiederti se esiste un modo per stampare più fogli di lavoro su un singolo foglio di carta.

Ci sono un paio di modi in cui puoi avvicinarti a una soluzione a questo problema. Il primo è semplicemente stampare più pagine per foglio, utilizzando le funzionalità del driver della stampante. Ad esempio, ho una vecchia HP LaserJet e il driver della stampante mi consente di specificare il numero di pagine da stampare per foglio di carta. Se volessi stampare tre o quattro fogli di lavoro di una sola pagina su un unico foglio di carta, tutto ciò che devo fare è seguire questi passaggi:

  1. Scegli Stampa dal menu File. Excel visualizza la finestra di dialogo Stampa.

  2. Nell’area Stampa della finestra di dialogo, scegliere l’opzione Intera cartella di lavoro.

  3. Fare clic sul pulsante Proprietà. Excel visualizza la finestra di dialogo Proprietà per la stampante, con la scheda Layout selezionata.

  4. Imposta il controllo Pages Per Sheet su 4.

  5. Fare clic su OK per chiudere la finestra di dialogo Proprietà.

  6. Fare clic su OK per stampare effettivamente i fogli di lavoro.

La stampante può offrire una funzionalità simile a quanto descritto qui, ma potrebbe essere necessario esplorare attraverso la finestra di dialogo Proprietà della stampante per trovare tale funzionalità. Ovviamente, stampare in questo modo può portare a un testo molto piccolo sulla stampa, perché il driver della stampante riduce semplicemente ogni pagina per occupare un’area proporzionata della pagina stampata. Se si desidera ridurre parte dello spazio bianco e quindi aumentare la dimensione del testo stampato, è necessario cercare una soluzione diversa.

Molte persone, per consolidare ciò che viene stampato, in realtà creano un “foglio di lavoro per la stampa” che non contiene altro che riferimenti alle aree da stampare sugli altri fogli di lavoro della cartella di lavoro. Questi riferimenti possono essere eseguiti tramite formule che fanno riferimento ai dati su ciascun foglio di lavoro o utilizzando lo strumento fotocamera in Excel. (Lo strumento fotocamera è stato descritto in altri numeri di ExcelTips.)

Per una soluzione automatizzata di amalgamare più fogli di lavoro in un unico foglio di lavoro, puoi utilizzare una macro. La seguente macro creerà un nuovo foglio di lavoro alla fine della cartella di lavoro e copierà il contenuto da tutti gli altri fogli di lavoro al suo interno.

Sub PrintOnePage()

Dim wshTemp As Worksheet, wsh As Worksheet     Dim rngArr() As Range, c As Range     Dim i As Integer     Dim j As Integer

ReDim rngArr(1 To 1)

For Each wsh In ActiveWorkbook.Worksheets         i = i + 1         If i > 1 Then   ' resize array             ReDim Preserve rngArr(1 To i)

End If

On Error Resume Next         Set c = wsh.Cells.SpecialCells(xlCellTypeLastCell)

If Err = 0 Then             On Error GoTo 0

'Prevent empty rows             Do While Application.CountA(c.EntireRow) = 0 _               And c.EntireRow.Row > 1                 Set c = c.Offset(-1, 0)

Loop

Set rngArr(i) = wsh.Range(wsh.Range("A1"), c)

End If     Next wsh

'Add temp.Worksheet     Set wshTemp = Sheets.Add(after:=Worksheets(Worksheets.Count))



On Error Resume Next     With wshTemp         For i = 1 To UBound(rngArr)

If i = 1 Then                 Set c = .Range("A1")

Else                 Set c = _                   ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)

Set c = c.Offset(2, 0).End(xlToLeft)  'Skip one row             End If

'Copy-paste range (prevent empty range)

If Application.CountA(rngArr(i)) > 0 Then                 rngArr(i).Copy c             End If         Next i     End With     On Error GoTo 0

Application.CutCopyMode = False ' prevent marquies

With ActiveSheet.PageSetup     'Fit to 1 page         .Zoom = False         .FitToPagesWide = 1         .FitToPagesTall = 1     End With

'Preview New Sheet     ActiveWindow.SelectedSheets.PrintPreview

'Print Desired Number of Copies     i = InputBox("Print how many copies?", "ExcelTips", 1)

If IsNumeric(i) Then         If i > 0 Then             ActiveSheet.PrintOut Copies:=i         End If     End If

'Delete temp.Worksheet?

If MsgBox("Delete the temporary worksheet?", _       vbYesNo, "ExcelTips") = vbYes Then         Application.DisplayAlerts = False         wshTemp.Delete         Application.DisplayAlerts = True     End If End Sub

Dopo che il foglio di lavoro combinato è stato assemblato, la macro visualizza il foglio di lavoro utilizzando Anteprima di stampa. Quando si chiude l’anteprima di stampa, viene chiesto quante copie del foglio di lavoro si desidera stampare. Se inserisci un numero maggiore di zero, verranno stampate altrettante copie. Infine, la macro offre di eliminare il foglio di lavoro combinato per te appena prima di terminare.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (3243) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: