MS Office 365 vs. macOS Office 365: VBA Makro: Fehler beim PDF erstellen und anschließendem drucken

vonLeitn

Aktives Mitglied
Thread Starter
Registriert
21.11.2004
Beiträge
2.165
Reaktionspunkte
718
Ich bin da nicht wirklich Laie, habe im VBA Makro Code nachfolgende zwei Zeilen, die erste Zeile erstellt ein PDF die andere druckt das Arbeitsblatt aus.

Code:
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=DateiName1 & "RE-Nr. " & DateiName4 & " " & DateiName2 & " " & DateiName3 & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
     ActiveSheet.PrintOut Copies:=1, Collate:=True

Dieses läuft in einem Loop, für mehrere Rechnungen in diesem Fall, in Windows Office ohne Probleme für jede neue Aktion durch (290 mal)!

Bei Mac Office bekomme ich jedesmal nach dem erstellen der ersten PDF und dem Drucken des ersten Arbeitsblattes, zwar ein PDF des zweiten Arbeitsblattes (nächste Rechnung) aber der Druck scheitert mit einer 1004 Fehlermeldung.

Der Pfadaufbau bei beiden OS ist verschieden aber passt, ich habe versucht den Drucker vorher zu setzen, alles ohne Erfolg.

Wenn ich den Druck ausklammere läuft die PDF Erstellung durch, und wenn ich den PDF-Druck ausklammere der Druck.

Bitte helft mir. ;-) Hat irgend jemand eine VBA laufen das einmal druckt und ein PDF erstellt.

Danke vL
 
Zuletzt bearbeitet:
Ja da hast Du recht, ich kann deutsch leider nur am "Rande". Eher noch bayrisch, da hab ich lernen müssen dass es kein echtes Deutsch ist. :)

p.s. Ich habe das geändert.
 
Wie wäre es denn hiermit? (Name der Excel datei = Blatt1.xls)

Code:
Sub ExportUndDruckenPDFMac()
    Dim ws As Worksheet
    Dim pdfPfad As String
    Dim sh As Object
    
    ' Setze das Arbeitsblatt
    Set ws = ThisWorkbook.Sheets("Blatt1")
    
    ' Definiere den Speicherort und Dateinamen der PDF
    pdfPfad = MacScript("return (path to desktop folder as text) & ""Blatt1_Ausgabe.pdf""")
    
    ' Exportiere das Arbeitsblatt als PDF
    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPfad, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    
    ' Drucke die PDF-Datei mit dem Standard-PDF-Viewer unter macOS
    On Error Resume Next
    Set sh = CreateObject("Shell.Application")
    If sh Is Nothing Then
        Shell "open " & Chr(34) & pdfPfad & Chr(34), vbNormalFocus
    Else
        sh.ShellExecute pdfPfad, "", "", "print", 1
    End If
    On Error GoTo 0
    
    MsgBox "PDF wurde erfolgreich erstellt und gedruckt!", vbInformation
End Sub
 
Wenn das funktioniert bis Du mein Held! Bitte sei mir nicht böse ,ich werde das erst morgen vormittag umgehend testen, weil der Einbauch des Codes im Script ja auch etwas dauert.

Heute bin ich einfach raus. Ich teste seit 11 Tagen verschiedenste Lösungen die nicht zum Ziel führen. .:-)
 
Warum soll ich Dir Böse sein?

Viel Erfolg

Noch schnell ein paar Anmerkungen

Dein VBA-Code verwendet ExportAsFixedFormat und PrintOut, die unter Windows funktionieren, aber auf macOSProbleme verursachen können. Hier sind einige mögliche Ursachen und Lösungen:

1. Probleme mit ExportAsFixedFormat auf macOS

  • Der Pfad für die PDF-Datei kann fehlerhaft sein, weil FileName einen vollständigen absoluten Pfad benötigt.
  • ActiveSheet.ExportAsFixedFormat unterstützt einige Parameter unter macOS nicht einwandfrei.

Lösung: Speicherpfad anpassen​

MacOS verwendet "/" statt "" als Trennzeichen. Teste folgenden Code:

Code:
Dim Pfad As String
Pfad = "/Users/DeinBenutzername/Documents/" ' Anpassen an deinen MacOS-Pfad

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    FileName:=Pfad & DateiName1 & "RE-Nr. " & DateiName4 & " " & DateiName2 & " " & DateiName3 & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Alternativ: Falls xlTypePDF nicht erkannt wird, kannst du es durch 0 ersetzen:

Code:
ActiveSheet.ExportAsFixedFormat Type:=0, FileName:=Pfad & "Test.pdf"

2. ActiveSheet.PrintOut funktioniert unter macOS nicht

  • Das Drucken auf macOS unterscheidet sich von Windows, weil es keine standardisierten Druckertreiber gibt.
  • Der Parameter Collate:=True kann Probleme verursachen.

Lösung: Alternativ PrintOut für Mac verwenden​


Code:
ActiveSheet.PrintOut Copies:=1, Collate:=False

Falls das nicht funktioniert, probiere:

Code:
Application.Dialogs(xlDialogPrint).Show

Dadurch wird der Druckdialog angezeigt, was unter macOS stabiler funktioniert.
 
Ich wollte nicht wortbrüchig werden, leider hänge ich technisch und zeitlich hinterher.

Ich denke ich muss auch noch für pdfPfad = MacScript("return (path to desktop folder as text) & ""Blatt1_Ausgabe.pdf""")

Für den roten Bereich eine Möglichkeiten finden das in ein Verzeichnis zu schieben. Aber die Einbindung von MacScript bringt mich doch schon einmal auf völlig neue Ideen!
 
Zurück
Oben Unten