im Forum nebenan wurde die Aufgabe gestellt, eine aktive Mappe als PDF und XLSM auf eine USB-Stick zu speichern, wenn denn einer bereit ist. Den letzten Teil der Aufgabe hat der nette Mensch schon selbst mitgebracht, es ging in erster Linie um die Dateinamen der Ausgabe.
Es gab tatsächlich mehrere Vorschläge (erfreulich!) und der schlimme Finger hat sich gegen meinen entschieden


Code: Alles auswählen
Option Explicit 'zwingt zur Deklaration der Variablen und ist ein Muss am Anfang jeden Moduls, vermeidet Tippfehler-Probleme
Sub VBAstel_Test_FSO()
Dim wb As Workbook, FSO As Object, oDrv As Object 'Variable bekommen bis auf wenige Ausnahmen ihren Typ als Prefix sXX = String, oXXX = Object
Dim sPath As String, sDrv As String, sFile As String 'in FSO steckt Object schon drin, also ohne Prefix, wb und ws sind ewige Standards, also kurz
Dim sPDF As String, sXLSM As String 'engl. deswegen, weil LW in den Eigenschaften als Drives erscheinen, daher oDrv
Set wb = ActiveWorkbook 'hier kann man auch ThisWorkbook setzen, dann passiert der Code in der Mappe, in der er aufgerufen wird
Set FSO = CreateObject("Scripting.filesystemobject").Drives 'hier wird die Mutter aller Laufwerke als Objekt gesetzt
sPath = wb.Path & "\" 'ohne "\" klemmt's gewaltig
sFile = "Monatslisten-Abschluss " & Format(DateSerial(Year(Now), Month(Now), 0), "MMMM YYYY") 'das Namenskonstrukt muss nur einmal gebaut werden
sPDF = sFile & ".pdf": sXLSM = sFile & ".xlsm" 'die zwei Exts als Ergänzung in einer Zeile, kombiniert durch den ":"
For Each oDrv In FSO 'Beginn Schleife
If oDrv.IsReady And oDrv.DriveType = 1 Then 'Bedingung
sDrv = oDrv.DriveLetter & ":\" 'sDrv mit dem ":\" - ohne klemmt's gewaltig, der Laufwerksbuchstab als Ergänzung
sPDF = sDrv & sPDF 'hier wird das .pdf zusammengesetzt
sXLSM = sDrv & sXLSM 'hier das .xlsm
Debug.Print sPDF 'Debug.print dient der Zwischenkontrolle der zusammengesetzten Variablen
Debug.Print sXLSM ' und ist im Direktfenster sichtbar
End If 'Bedingung Ende
Next oDrv 'Schleife Ende
With wb 'öffnet die Reihe der Argumente für wb
.Save 'speichern
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPDF, Quality:=xlQualityStandard 'als PDF ausgeben
.SaveCopyAs sXLSM 'als XLSM ausgeben
End With 'schließt die Reihe
Set FSO = Nothing 'Freigeben des Objekts
End Sub

Schönen Amnd noch!

Nachtrag: Das
FileSystemObject
benötigt unter VBE / Extras / Verweise die Microsoft Scripting Runtime