Sub PrintWithoutMarkups()
' Makro exportiert ein Word ohne Markups und aktualisiert alle Tabellen, Inhalts- und Abbildungsverzeichnisse.
' AVO + ChatGPT 28.01.2025
' V1.0
' Alles im Word-Dokument aktualisieren:
' Quelle:
, Indra Kohl
Selection.WholeStory 'Ganzes Dok markieren
Selection.Fields.Update 'Aktualisierung der Felder
Selection.HomeKey 'Spring an die 1. Position
ActiveDocument.PrintPreview 'Öffnen der Druckvorschau
ActiveDocument.ClosePrintPreview 'Schliessen der Druckvorschau
Dim pdfPath As String
Dim dlgSaveAs As FileDialog
Dim fileName As String
Dim toc As TableOfContents
Dim figTable As TableOfFigures
' Deaktiviere die Anzeige von Markups
ActiveDocument.TrackRevisions = False
' Alle Inhaltsverzeichnisse aktualisieren
For Each toc In ActiveDocument.TablesOfContents
toc.Update
Next toc
' Abbildungsverzeichnisse aktualisieren
For Each figTable In ActiveDocument.TablesOfFigures
figTable.Update
Next figTable
' Öffne den Dialog zum Speichern als PDF
Set dlgSaveAs = Application.FileDialog(msoFileDialogSaveAs)
dlgSaveAs.Title = "PDF speichern als"
' Entferne die Dateierweiterung (falls vorhanden) und setze den Standard-Dateinamen auf PDF
fileName = ActiveDocument.Name
If InStrRev(fileName, ".") > 0 Then
' Entferne die Erweiterung (.docm, .docx, etc.)
fileName = Left(fileName, InStrRev(fileName, ".") - 1)
End If
' Setze den Dateinamen und den Pfad im Dialog
dlgSaveAs.InitialFileName = ActiveDocument.Path & "\" & fileName & ".pdf"
' Zeige den Dialog an
If dlgSaveAs.Show = -1 Then
pdfPath = dlgSaveAs.SelectedItems(1) ' Gibt den ausgewählten Pfad zurück
' Überprüfen, ob der Benutzer einen Dateinamen ausgewählt hat
If pdfPath = "" Then Exit Sub
' Falls der Benutzer den Dateinamen ohne .pdf eingegeben hat, fügen wir es hinzu
If Right(pdfPath, 4) <> ".pdf" Then
pdfPath = pdfPath & ".pdf"
End If
' Speichern als PDF
On Error GoTo ErrorHandler
ActiveDocument.ExportAsFixedFormat OutputFileName:=pdfPath, ExportFormat:=wdExportFormatPDF
' PDF nach dem Speichern automatisch öffnen
Call OpenPDF(pdfPath)
Exit Sub
Else
Exit Sub
End If
ErrorHandler:
MsgBox "Fehler beim Speichern als PDF. Überprüfe den Dateipfad und versuche es erneut.", vbCritical
End Sub
' Funktion, um das gespeicherte PDF zu öffnen
Sub OpenPDF(pdfPath As String)
On Error Resume Next
' Versuche, das PDF mit dem Standard-PDF-Viewer zu öffnen
Shell "cmd /c start """" """ & pdfPath & """", vbHide
On Error GoTo 0
End Sub