Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Word über Vba Excel als PDF speichern

Word über Vba Excel als PDF speichern
20.04.2019 14:15:22
Marcel
Hallo,
ich habe Makro mit dem ich Werte in eine Word Dokument setze.
  Private Sub cb_PAdd_Click()
Dim PathFile As String
Dim objWDApp As Object
Dim objWDDoc As Object
Dim Pfad As String
Dim Dateiname As String
Dim pdfName As String
PathFile = ThisWorkbook.path & Application.PathSeparator & _
"Vorlage_PreAdd.doc"
Set objWDApp = OffApp("Word", True)
If Not objWDApp Is Nothing Then
Set objWDDoc = objWDApp.Documents.Open(PathFile, True)
Dateiname = TextBox2 & "_" & TextBox3 & "_" & TextBox4
If Dir(ThisWorkbook.path & "\" & Dateiname, vbDirectory) = "" Then
MkDir ThisWorkbook.path & "\" & Dateiname
MsgBox "Es wurde ein Ordner für die ID: " & TextBox2 & " erstellt!"
Pfad = ActiveWorkbook.path & "\" & Dateiname & "\"
Else
Pfad = ActiveWorkbook.path & "\" & Dateiname & "\"
End If
Dim Geschlecht As String
With objWDDoc
objWDApp.Visible = False
If ListBox1.ListIndex > -1 Then
If TextBox5.Text = "m" Then
Geschlecht = "Mr"
Else
Geschlecht = "Mrs"
End If
.Bookmarks("Mr_Mrs").Range = Geschlecht
.Bookmarks("Fam_Name").Range = TextBox3.Value
.Bookmarks("Vorname").Range = TextBox4.Value
.Bookmarks("Staatsangehörigkeit").Range = TextBox8.Value
.Bookmarks("E_Mail").Range = TextBox9.Value
.Bookmarks("ID").Range = TextBox2.Value
.Bookmarks("ID_1").Range = TextBox2.Value
.Bookmarks("Fam_Name_1").Range = TextBox3.Value
.Bookmarks("Vorname_1").Range = TextBox4.Value
.Bookmarks("Geburtstag").Range = TextBox6.Value
.Bookmarks("Geburtsort").Range = TextBox7.Value
.Bookmarks("Passnummer").Range = TextBox24.Value
...
Nun würde ich gern über einen Button ein Word Dokument auswählen und dieses als PDF speichern.
Private Sub CommandButton9_Click()
Dim openDia
Dim wrdApp
Dim wrdDoc
Dim Pfad As String, Ordnername As String
Ordnername = TextBox2 & "_" & TextBox3 & "_" & TextBox4
Pfad = ThisWorkbook.path & "\" & Ordnername & "\" & TextBox1.Text & ".pdf"
openDia = Application.GetOpenFilename("Word-Dokumente, *.docx", , "Bitte Datei auswählen")
If openDia = False Then Exit Sub
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Add(openDia)
wrdDoc.ExportAsFixedFormat Pfad, 17
wrdDoc.Save
wrdDoc.Close
wrdApp.Quit
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub
Das geht mal und mal nicht... Wenn es nicht geht steht als Fehler das das Dokument bereits verwendet wird. Oder ich speichere das Word Dokument und dann speichert er die PDF ab.
Was mach ich da falsch?
Gruß
Marcel
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word über Vba Excel als PDF speichern
20.04.2019 14:44:59
Hajo_Zi
Hallo Marcel,
ist da nicht ein Word Forum besser?
https://www.ms-office-forum.net/forum/forumdisplay.php?f=30

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Word über Vba Excel als PDF speichern
20.04.2019 15:06:15
Marcel
Hallo Hajo,
ich schreibe den Code ja über Excel vba.
Da dort die Daten über eine Tabelle geholt werden.
Gruß
Marcel
AW: Word über Vba Excel als PDF speichern
20.04.2019 16:15:16
Luschi
Hallo Marcel,
bei dieser Vba-Zeile: Dateiname = TextBox2 & "_" & TextBox3 & "_" & TextBox4
würde ich NIE auf die Idee kommen, daß Du hier den Sub-Pfad zusammengesetzt.
Trotzdem mußt Du prüfen, ob in diesem String (der ja aus Usereingaben in TB's kommt),
ungültige Zeichen (die Windows nicht mag!) sind, denn schließlich hat der User davon vielleicht/sicher keine Ahnung.
Ansonsten kann man nur spekulieren, denn an diesem Befehl liegt es nicht:
wrdDoc.ExportAsFixedFormat Pfad, 17
da vorhandene pdf-Dateien mit dem entsprechenden Namen einfach überschrieben werden.
Was aber, wenn diese Pdf-Datei geöffet ist. Hier habe ich schon so manche Überraschung erlebt.
Um solche Vba-Fehler zu killen, muß man schon das Arsenal des Debuggings auspacken:
- Haltepunkte setzen (F9)
- schrittweise weiterschalten (F8)
- Überwachungsfenster anzeigen
- und Variablen, die kontroliert werden sollen/müssen in diesem Ü-Fenster anzeigen/überwachen
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Word über Vba Excel als PDF speichern
20.04.2019 23:29:14
Rainer
Hallo Marcel,
ergänzend vielleicht noch folgende Prüfung:
Sub Vorhanden_Datei()
If Dir(Pfad)  "" Then
MsgBox "vorhanden"
Else
MsgBox "nicht vorhanden"
End If
End Sub
Luschis Hinweis auf bereits geöffnete PDF kann ich so unterschreiben, ich habe auch schon bemerkt dass diese "geöffnet" waren, obwohl es offensichtlich kein offenes Fenster dafür gab.
Gruß, Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Word über VBA Excel als PDF speichern


Schritt-für-Schritt-Anleitung

Um ein Word-Dokument über VBA in Excel als PDF zu speichern, folge diesen Schritten:

  1. Öffne Excel und aktiviere die Entwicklertools.

  2. Füge ein neues Modul hinzu.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub CommandButton9_Click()
       Dim openDia
       Dim wrdApp
       Dim wrdDoc
       Dim Pfad As String, Ordnername As String
       Ordnername = TextBox2 & "_" & TextBox3 & "_" & TextBox4
       Pfad = ThisWorkbook.Path & "\" & Ordnername & "\" & TextBox1.Text & ".pdf"
       openDia = Application.GetOpenFilename("Word-Dokumente, *.docx", , "Bitte Datei auswählen")
       If openDia = False Then Exit Sub
       Set wrdApp = CreateObject("Word.Application")
       wrdApp.Visible = True
       Set wrdDoc = wrdApp.Documents.Open(openDia)
       wrdDoc.ExportAsFixedFormat Pfad, 17
       wrdDoc.Close
       wrdApp.Quit
       Set wrdDoc = Nothing
       Set wrdApp = Nothing
    End Sub
  4. Pass die TextBoxen an, um die Werte für den Ordnernamen und die PDF-Datei zu definieren.

  5. Starte das Makro über den zugehörigen Button in Deiner Excel-Oberfläche.


Häufige Fehler und Lösungen

  • Fehler: "Das Dokument wird bereits verwendet."

    • Stelle sicher, dass das Word-Dokument nicht bereits geöffnet ist. Schließe das Dokument, bevor Du versuchst, es erneut zu speichern.
  • Fehler: "Pfad nicht gefunden."

    • Überprüfe, ob der Ordner existiert, bevor Du versuchst, die PDF zu speichern. Du kannst den Pfad mit Dir(Pfad) prüfen.
  • Fehler beim Exportieren als PDF:

    • Stelle sicher, dass keine PDF-Datei mit dem gleichen Namen geöffnet ist. Schließe alle relevanten Anwendungen, bevor Du das Makro ausführst.

Alternative Methoden

Wenn Du ein Word-Dokument als PDF speichern möchtest, kannst Du auch die folgenden Methoden verwenden:

  • Direktes Speichern in Word:

    • Öffne das Word-Dokument und wähle "Datei" > "Speichern unter" und wähle "PDF" als Dateiformat.
  • Verwendung von Power Automate:

    • Mit Power Automate (ehemals Microsoft Flow) kannst Du automatisierte Prozesse erstellen, um Word-Dokumente als PDFs zu speichern.

Praktische Beispiele

Hier ist ein Beispiel, wie Du ein Word-Dokument mit dem Namen "Beispiel.docx" als PDF speichern kannst:

Private Sub SaveWordAsPDF()
    Dim wrdApp As Object
    Dim wrdDoc As Object
    Dim pdfPath As String
    pdfPath = "C:\Users\DeinBenutzername\Documents\Beispiel.pdf"
    Set wrdApp = CreateObject("Word.Application")
    Set wrdDoc = wrdApp.Documents.Open("C:\Users\DeinBenutzername\Documents\Beispiel.docx")
    wrdDoc.ExportAsFixedFormat pdfPath, 17
    wrdDoc.Close
    wrdApp.Quit
End Sub

In diesem Beispiel wird das Word-Dokument "Beispiel.docx" geöffnet und als "Beispiel.pdf" gespeichert.


Tipps für Profis

  • Debugging: Nutze Haltepunkte und die Überwachungsfenster in VBA, um den Code zu testen und Probleme zu identifizieren.
  • Fehlerbehandlung: Füge On Error Resume Next hinzu, um Fehler abzufangen und den Code fortzusetzen.
  • Automatisierung: Kombiniere Excel und Word, um Daten automatisch in Dokumente einzufügen und sie als PDF zu speichern.

FAQ: Häufige Fragen

1. Wie speichert man ein Word-Dokument als PDF? Du kannst ein Word-Dokument über die "Speichern unter"-Option in Word als PDF speichern oder den oben angegebenen VBA-Code verwenden.

2. Warum funktioniert mein VBA-Code nicht? Überprüfe, ob alle Pfade korrekt sind und ob das Word-Dokument oder die Ziel-PDF-Datei bereits geöffnet ist. Debugge den Code, um weitere Fehler zu identifizieren.

3. Welche Excel-Version benötige ich für diese Methode? Der VBA-Code funktioniert in Excel-Versionen ab 2010 und höher, vorausgesetzt, dass Word ebenfalls installiert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige