Hallo zusammen,
ich benutze windows 11 und office 365.
Ich lese zunächst aus einer Exceldatei Felder für Seriendruck ein. Dabei werden Felder und Dateipfade für Bilder eingelesen.
Das Word Dokument enthält Felder und Lesezeichen. Über die Lesezeichen werden später die Bilder eingefügt.
Den Seriendruck und das einfügen der Bilder steuer ich über einen VBA Code in Word.
In dem untenstehenden Code, werden Bilder korrekt eingefügt, aber die Felder aus dem Seriendruck nicht ausgefüllt.
Ich hoffe ich habe das Problem ausreichend genau beschrieben. ich wäre über Hilfe sehr dankbar.
Viele Grüße
Florian
Sub SeriendruckMitMehrerenBildernInEinzeldokumenteUndPDF3()
Dim docVorlage As Document
Dim docEinzel As Document
Dim strDateiname As String
Dim strBildPfad As String
Dim pfad As String
Dim i As Integer
Dim rng As Range
Dim bildFelder As Variant
Dim bildLesezeichen As Variant
Dim j As Integer
' Pfad anpassen, wo die Dateien gespeichert werden sollen
pfad = "c:\TEMP\_Test_OZD_Reports\M3\" ' Passe diesen Pfad an
' Bildspalten und dazugehörige Lesezeichen festlegen (Spaltenname in der Excel-Datei und entsprechendes Lesezeichen in Word)
bildFelder = Array("Uebersicht", "Foto1", "Foto2", "Foto3", "Fotodoc1", "Fotodoc2", "Fotodoc3") ' Excel-Spaltennamen für Bildpfade
bildLesezeichen = Array("UebersichtLZ", "Foto1LZ", "Foto2LZ", "Foto3LZ", "Fotodoc1LZ", "Fotodoc2LZ", "Fotodoc3LZ") ' Lesezeichen in Word
' Aktuelles Dokument (Vorlage) speichern
Set docVorlage = ActiveDocument
' Prüfen, ob Seriendruckdaten vorhanden sind
If docVorlage.MailMerge.DataSource.RecordCount > 0 Then
' Schleife durch alle Datensätze im Seriendruck
For i = 1 To docVorlage.MailMerge.DataSource.RecordCount
' Wechselt zum jeweiligen Datensatz
docVorlage.MailMerge.DataSource.ActiveRecord = i
' Neues Dokument basierend auf der Vorlage erstellen
Set docEinzel = Documents.Add(Template:=docVorlage.FullName)
' Erstellen des Dateinamens basierend auf einem Seriendruckfeld (z.B. Name)
strDateiname = docVorlage.MailMerge.DataSource.DataFields("NameDoc").Value
' Schleife durch die Bildspalten und füge die Bilder ein
For j = LBound(bildFelder) To UBound(bildFelder)
' Bildpfad aus der jeweiligen Spalte holen
strBildPfad = docVorlage.MailMerge.DataSource.DataFields(bildFelder(j)).Value
' Prüfen, ob der Bildpfad gültig ist und das Lesezeichen im Dokument vorhanden ist
If Len(strBildPfad) > 0 And Len(Dir(strBildPfad)) > 0 Then
' Prüfen, ob das Lesezeichen vorhanden ist
If docEinzel.Bookmarks.Exists(bildLesezeichen(j)) Then
Set rng = docEinzel.Bookmarks(bildLesezeichen(j)).Range
' Bild einfügen
rng.InlineShapes.AddPicture FileName:=strBildPfad, LinkToFile:=False, SaveWithDocument:=True
Else
MsgBox "Lesezeichen nicht gefunden: " & bildLesezeichen(j)
End If
End If
Next j
' Word-Dokument speichern
docEinzel.SaveAs2 FileName:=pfad & strDateiname & ".docx", FileFormat:=wdFormatXMLDocument
' PDF speichern
docEinzel.ExportAsFixedFormat OutputFileName:=pfad & strDateiname & ".pdf", _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent, _
IncludeDocProps:=True, _
KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, _
DocStructureTags:=True, _
BitmapMissingFonts:=True, _
UseISO19005_1:=False
' Dokument schließen, ohne zu speichern
docEinzel.Close False
Next i
Else
MsgBox "Keine Datensätze für den Seriendruck vorhanden."
End If
End Sub
|