gibt es eine Möglichkeit mit VB folgendes abzubilden.
Ich möchte gerne ca. 30 Exceldateien (Auswahl) nacheinander öffnen und immer
das letzte Tabellenblatt auf einer Seite ausdrucken?
Danke für eure Hilfe.
Gruß
Andreas
Sub LastPrint()
Dim Arr, Datei, WB As Workbook, Pfad As String, Ext As String
'Vorgaben
Arr = Array("Mappe1", "Mappexx", "Mappe2")
Pfad = "X:\Temp\test\"
Ext = ".xlsx"
'Vorgaben Ende
Pfad = IIf(Right(Pfad, 1) = "\", Pfad, Pfad & "\")
For Each Datei In Arr
If Dir(Pfad & Datei & Ext) <> "" Then
Set WB = Workbooks.Open(Pfad & Datei & Ext) 'öffnen
WB.Sheets(Sheets.Count).PrintOut 'letztes Blatt drucken
WB.Close False 'schließen
End If
Next
End Sub
Sub LastPrint()
Dim Dlg As FileDialog
Dim Si, Pfad As String
Dim WB As Workbook, TB As Worksheet
Pfad = "x:\temp"
Set Dlg = Application.FileDialog(msoFileDialogFilePicker) 'Datei wählen"
With Dlg
.AllowMultiSelect = True 'Darf der User mehrere Dateien auswählen Ja
.Filters.Add "Excel", "*.xlsx; *.xlsm" 'FIlter, welche Dateien darf er auswählen
.InitialFileName = Pfad 'Welches Verzeichnis soll voreingestellt sein
End With
If Dlg.Show = True Then
For Each Si In Dlg.SelectedItems 'Die Abfrage für den selektierten Eintrag
'Öffnen
Stop
Set WB = Workbooks.Open(Si)
Set TB = WB.Sheets(WB.Sheets.Count)
'Formatieren
Application.PrintCommunication = False
With TB.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.PrintCommunication = True
'Drucken
TB.PrintOut
'Schließen
WB.Close False
Next
End If
End Sub