ich habe "mal wieder" eine Schwierigkeit zu bewältigen, wo Ihr mir hoffentlich weiterhelfen könnt.
Zuerst einmal mein bisheriger Code:
Sub Schreiben()
Dim Eingabe As Variant
Dim Tabelle
Dim wrdApp As Object
Dim wrdDoc As Object
Dim dateipfad As String
Set Tabelle = ThisWorkbook.Worksheets("Tabelle")
Do
Zeile = Application.InputBox(prompt:="Bitte die Zeile eingeben, aus der das Dokument _
generiert werden soll!", Title:="Eingabe Zeile", Default:="", Type:=1)
If VarType(Zeile) = vbBoolean Then Exit Do
If Zeile = 3 Then
If Tabelle.Cells(Zeile, 11).Value = "" Then
MsgBox "Das Feld bla ist nicht ausgewählt. Ein Schreiben kann nicht erstellt werden", 16, " _
Warnung"
Exit Do
Else
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("U:\Anschreiben.docm")
End If
For i = Tabelle.Cells(Zeile, 8) To Tabelle.Cells(Zeile, 9) Step 1
wrdDoc.FormFields("Text1").Result = Tabelle.Cells(Zeile, 38).Value
wrdDoc.FormFields("Text2").Result = Tabelle.Cells(Zeile, 39).Value
wrdDoc.FormFields("Text3").Result = Tabelle.Cells(Zeile, 40).Value
wrdDoc.FormFields("Text4").Result = Tabelle.Cells(Zeile, 41).Value
wrdDoc.FormFields("Text5").Result = Tabelle.Cells(Zeile, 42).Value
wrdDoc.FormFields("Text6").Result = Tabelle.Cells(Zeile, 43).Value
wrdDoc.FormFields("Text7").Result = Tabelle.Cells(Zeile, 44).Value
wrdDoc.FormFields("Text8").Result = i
wrdDoc.FormFields("Text9").Result = Tabelle.Cells(Zeile, 10).Value
wrdDoc.FormFields("Text10").Result = Tabelle.Cells(Zeile, 46).Value
wrdDoc.FormFields("Text11").Result = Tabelle.Cells(Zeile, 47).Value
wrdDoc.FormFields("Text12").Result = Tabelle.Cells(Zeile, 11).Value
wrdDoc.FormFields("Text13").Result = Tabelle.Cells(Zeile, 48).Value
wrdDoc.FormFields("Text14").Result = Tabelle.Cells(Zeile, 10).Value
dateipfad = "L:\"
wrdDoc.ExportAsFixedFormat OutputFileName:=dateipfad & "\" & Tabelle.Cells(Zeile, 42).Value _
& " " & Tabelle.Cells(Zeile, 43).Value & " " & Tabelle.Cells(Zeile, 44).Value & " - " & "0000" & " - " & Format(Now, "DD.MM.YYYY") & ".pdf", _
ExportFormat:=17, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
wrdApp.Quit savechanges:=wdDoNotSaveChanges
Set Tabelle = Nothing
Set wrdDoc = Nothing
Set wrdApp = Nothing
Next i
Exit Do
End If
MsgBox "Fehler! In der genannten Zeile fehlen Werte oder es handelt es sich um eine nicht _
existierende oder komplett leere Zeile!", 16, "Warnung"
Loop
End Sub
So nun zu dem eigentlichen Problem. Das Makro läuft in einer Excel Datei, dass die Word Dokumente in einer Schleife produzieren soll und zwar abhängig von 2 Zellen in jeder Spalte.Beispiel:
Zelle A = 468
Zelle B = 470
Nun soll das Makro nacheinander 3 Dateien erstellen. Die erste Datei beinhaltet Nummer 468, die _ zweite Datei 469 und die dritte Datei 470. Mit der ersten Datei klappt das auch, aber sobald er die zweite Datei machen soll bricht das Makro mit der Meldung "Objektvariable oder With-Blockvariable nicht festgelegt" ab. Im Makro selber wird die Zeile
wrdDoc.FormFields("Text1").Result = Tabelle.Cells(Zeile, 38).Value
gelb markiert.Das ist allerdings nur der erste Schritt, der funktionieren soll. Nun kann es aber vorkommen, dass in Zelle B nichts drinsteht. Wenn dem der Fall ist bricht das Makro sofort ab, da die For Schleife nicht bei beiden Variablen Inhalt hat. Wie kann ich das, vielleicht mit einer IF Schleife, abfangen?
Wäre klasse, wenn mir da jemand auf die Spünge helfen kann.
Grüße
Kenji