Guten Morgen alle zusammen,
ich habe aktuell ein Problem mit einem VBA-Skript, das mich etwas in den Wahnsinn treibt. Das Skript erfüllt die Funktion, Serienbriefe der Reihe nach als PDF-Dateien in einen Ordner mit dem Namen "PDF" zu speichern. Genutzt wird das Skript mit Word 2016.
Ich habe das Skript erstellt bzw. angepasst, es getestet und an die entsprechenden KollegInnen gesendet - das war vor ca. 3 Wochen und alles lief ohne Probleme, sowohl auf meinem Gerät als auch bei den KollegInnen. Nun gibt es einen Änderungswunsch und plötzlich bekomme ich das Skript nicht mehr zum Laufen. Ich rede hier von dem unveränderten Originalskript, das vor 3 Wochen ohne Probleme funktioniert hat - es gab bisher noch keine Veränderungen am Code.
Vorab zeige ich hier einmal den Skript-Code:
Sub PDF_Export()
Application.ScreenUpdating = False
Dim StrFolder As String, StrName As String, MainDoc As Document, i As Long
Dim StrFolderExists As String, docName As String
Set MainDoc = ActiveDocument
docName = Left(ActiveDocument.Name, 5)
With MainDoc
StrFolder = .Path & Application.PathSeparator & "PDF" & Application.PathSeparator
StrFolderExists = Dir(StrFolder, vbDirectory)
If StrFolderExists = "" Then
MkDir (StrFolder)
End If
For i = 1 To .MailMerge.DataSource.RecordCount
With .MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("NAME1")) = "" Then Exit For
If Trim(.DataFields("NAME1")) = "NAME2" Then Exit For
StrName = docName & .DataFields("BEZEICHNUNG1") & "_" & .DataFields("BEZEICHNUNG2")
End With
.Execute Pause:=False
End With
StrName = Trim(StrName)
With ActiveDocument
.SaveAs2 FileName:=StrFolder & StrName & ".pdf", FileFormat:=wdFormatPDF, AddToRecentFiles:=False
.Close SaveChanges:=False
End With
Next i
End With
Application.ScreenUpdating = True
End Sub
Ich bin den Code mit F8 in Einzelschritten durchgegangen und konnte das Problem auf den unteren Teil eingrenzen:
Wenn ich den Mauszeiger über "ActiveDocument" (letzter Codeblock, "With ActiveDocument") ruhen lasse, wird mir die ganze Zeit der Name der geöffneten Word-Datei in einer kleinen Infobox angezeigt (ActiveDocument = "XY.dotm").
Sobald die Zeile ".Execute Pause:=False" ausgeführt wird, öffnet sich eine neue Datei ("Serienbriefe1") und die Anzeigt der Infobox zeigt an:
ActiveDocument = <Anwendungs- oder objektdefinierter Fehler>
An dieser Stelle bricht das Skript ab, die Zeile .SaveAs2... wird nicht mehr ausgeführt.
Hat irgendjemand eine Vermutung, wie dieses Problem zustande kommt (vor allem: warum lief das Skript vor 3 Wochen problemlos durch und funktioniert auch bei den KollegInnen noch, während es auf meinem Gerät nun den Fehler produziert?)? Kann mir jemand einen Tipp geben, was ich bei diesem Problem tun kann?
Viele Grüße und vielen Dank im Voraus
Stefan
|