Stampare più fogli di lavoro su una singola pagina

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

Esistono un paio di modi in cui puoi affrontare una soluzione a questo problema. Il primo consiste semplicemente nello stampare più pagine per foglio, utilizzando le funzionalità del driver della stampante. Ad esempio, il driver della mia stampante mi consente di specificare il numero di pagine da stampare per ogni foglio di carta. Se volessi stampare tre o quattro fogli di lavoro di una sola pagina tutti su un unico foglio di carta, tutto quello che devo fare è seguire questi passaggi:

  1. Premi Ctrl+P. Excel visualizza la finestra di dialogo Stampa (Excel 2007) o le opzioni di stampa (Excel 2010 o versioni successive).
  2. Se utilizzi Excel 2007, scegli l’opzione Intera cartella di lavoro nella finestra di dialogo. Se utilizzi una versione successiva di Excel, utilizza l’elenco a discesa immediatamente sotto l’intestazione Impostazioni per scegliere Stampa intera cartella di lavoro.
  3. Fai clic sul pulsante Proprietà (Excel 2007) o sul collegamento Proprietà stampante (versioni successive di Excel). Excel visualizza la finestra di dialogo Proprietà della stampante, con la scheda Layout selezionata.
  4. Imposta il controllo Pagine per foglio su 4.
  5. Fai clic su OK per chiudere la finestra di dialogo Proprietà.
  6. Fai clic su OK per stampare effettivamente i fogli di lavoro.

 

Non tutti i driver della stampante avranno questa funzionalità, ma il tuo potrebbe. Non lo saprai, però, a meno che non esplori la finestra di dialogo Proprietà della stampante per trovare quella funzionalità. Naturalmente, la stampa in questo modo può comportare la presenza di testo molto piccolo sulla stampa, poiché il driver della stampante riduce semplicemente ciascuna pagina per occupare un’area proporzionata della pagina stampata. Se desideri ridurre parte dello spazio bianco e quindi aumentare la dimensione del testo stampato, devi cercare una soluzione diversa.

Molte persone, per consolidare ciò che viene stampato, creano addirittura 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 Immagine fotografica di Excel.

Per una soluzione automatizzata che consente di unire più fogli di lavoro in un unico foglio di lavoro, è possibile utilizzare una macro. La seguente macro creerà un nuovo foglio di lavoro alla fine della cartella di lavoro e vi copierà il contenuto di tutti gli altri fogli di lavoro.

 

Sub PrintOnePage()
    Const WS_NAME = "...stampa", NOW_FMT = "dd/mm/yyyy hh:mm:ss", NOW_FMT_IT = "gg/mm/aaaa hh:mm:ss"
    Const MARGIN = 0.5
    Dim oWF As WorksheetFunction, rUsed() As Range, xWidth As Double
    Dim nCount As Integer, n As Integer
    Dim nRows As Integer, i As Integer
        
    On Error Resume Next
        Worksheets(WS_NAME).Activate
        If Err = 0 Then
            Application.DisplayAlerts = False
            Worksheets(WS_NAME).Delete
            Application.DisplayAlerts = True
        End If
    On Error GoTo 0
    Set oWF = Application.WorksheetFunction
    nCount = Worksheets.Count
    ReDim rUsed(1 To nCount)
    For n = 1 To nCount
        With Worksheets(n)
            If .Visible = xlSheetVisible And oWF.CountA(.UsedRange) > 0 Then
                Set rUsed(n) = .UsedRange
            End If
        End With
    Next n
    With Worksheets.Add(After:=Sheets(Sheets.Count))
        .Name = WS_NAME
        .Cells(1, 1).Value = "Intervallo utilizzato al " & oWF.Text(Now(), NOW_FMT)
        .Cells(2, 1).Formula = "=""Valori di cella al ""& TEXT(NOW(),""" _
            & NOW_FMT_IT & """)"
        .Cells(3, 1).Activate
        With .Columns(1)
            .Font.Name = "Courier New": .Font.Bold = True: .AutoFit
        End With
        ActiveWindow.DisplayGridlines = False
        For n = 1 To nCount
            If Not (rUsed(n) Is Nothing) Then
                ActiveCell.Value = rUsed(n).Parent.Name
                ActiveCell.Offset(1).Activate
                rUsed(n).Copy
                With .Pictures.Paste(Link:=True)
                    nRows = 1 + (.Height \ 409)
                    For i = 1 To nRows
                        ActiveCell.Offset(i - 1).RowHeight = .Height / nRows
                    Next i
                    If xWidth < .Width Then xWidth = .Width
                End With
                ActiveCell.Offset(nRows).Activate
            End If
        Next n
        .Cells(1, 1).Activate
        With ActiveCell
            If .Width < xWidth Then
                For n = 1 To 3
                    .ColumnWidth = xWidth * .ColumnWidth / .Width
                Next n
            End If
        End With
        With .PageSetup
            n = Application.InchesToPoints(MARGIN)
            .TopMargin = n: .BottomMargin = n
            .LeftMargin = n: .RightMargin = n
            .Zoom = False: .FitToPagesWide = 1: .FitToPagesTall = 1
        End With
    End With
    Application.CutCopyMode = False
    ActiveSheet.PrintPreview True
    
    'Stampa il numero di copie desiderato
    i = InputBox("Quante copie vuoi stampare?", "Excel Academy - Area Premium", 1)
    If IsNumeric(i) Then
        If i > 0 Then
            ActiveSheet.PrintOut Copies:=i
        End If
    End If

    'Elimina foglio temporaneo?
    If MsgBox("Eliminare il foglio di lavoro temporaneo?", _
        vbYesNo, "Excel Academy - Area Premium") = vbYes Then
        Application.DisplayAlerts = False
        Worksheets(WS_NAME).Delete
        Application.DisplayAlerts = True
    End If
End Sub

 

Il risultato è simile all’utilizzo dello strumento Immagine fotografica menzionato nel suggerimento.

Dopo aver messo insieme il foglio di lavoro combinato, la macro visualizza il foglio di lavoro utilizzando Anteprima di stampa. Quando chiudi Anteprima di stampa, ti viene chiesto quante copie del foglio di lavoro desideri stampare. Se si immette un numero maggiore di zero, verranno stampate altrettante copie. Infine, la macro si offre di eliminare il foglio di lavoro combinato appena prima di terminare.

 

 

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Ti è stato utile?