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.