Come stampare fogli di lavoro specifici da diverse cartelle di lavoro

Se hai molte cartelle di lavoro accumulate nel corso degli anni, potrebbe essere necessario stampare alcuni fogli di lavoro da ciascuna di esse. Ad esempio, potresti avere una directory che contiene una cartella di lavoro per ciascuna divisione della tua azienda per il decennio precedente. Se la tua azienda ha otto divisioni, significa che nella cartella sono presenti 80 cartelle di lavoro. Ora, se è necessario stampare le cifre del secondo e del terzo trimestre (dal secondo e dal terzo foglio di lavoro di ciascuna cartella di lavoro), inizi a vedere il problema. Il caricamento di ciascuna cartella di lavoro e la stampa dei fogli selezionati potrebbe richiedere molto tempo.

Un modo più rapido è creare una macro che esegua la stampa per te. La seguente macro inizia chiedendoti il percorso della directory. A condizione che si specifichi un percorso, la macro inizia quindi ad aprire ciascuna cartella di lavoro nella directory, quindi stampa il secondo e il terzo foglio di lavoro da ciascuna (alla macro non interessa il tipo di file delle cartelle di lavoro presenti nella directory: potrebbero essere file XLS, XLSX o XLSM. Dovrebbe aprirli tutti). Una volta stampata, la cartella di lavoro viene chiusa.

 

Public Sub PrintWorkbooks()
    Dim sCurFile As String
    Dim sPath As String

    'Ottiene il percorso
    sPath = InputBox("Percorso iniziale?", "Stampa Cartelle")
    If sPath <> "" Then
        On Error Resume Next
        Application.ScreenUpdating = False
        If Right(sPath, 1) <> "\" Then
            sPath = sPath & "\"
        End If
        sCurFile = Dir(sPath & "*.xls*", vbNormal)
        Do While Len(sCurFile) <> 0
            Workbooks.Open sPath & sCurFile, , True
            With Workbooks(sCurFile)
                .Worksheets(2).PrintOut
                .Worksheets(3).PrintOut
                .Close SaveChanges:=False
            End With
            sCurFile = Dir
            DoEvents
        Loop
        Application.ScreenUpdating = True
        On Error GoTo 0
    End If
End Sub

 

 

Ovviamente, se nella directory sono presenti numerose cartelle di lavoro, la stampa potrebbe richiedere del tempo. Potresti voler trovare un po’ di tempo in cui non hai nient’altro da fare e poi lasciare che la macro inizi l’esecuzione.

 

 

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

Ti è stato utile?