Ich versuche, jede Zeile einer Excel-Datei zu einer neuen PDF-Datei auf Basis einer docx-Vorlage zu epxtieren, die den Text enthält, den dieses Makro durch relevante Felder suchen und ersetzen wird in einem Excel-Blatt.Excel-VBA Find.replace mit Schleife funktioniert nicht korrekt
Das Problem ist der Code funktioniert nur in der ersten Schleife korrekt. Nach der ersten Schleife wird eine 1.pdf-Datei mit dem korrekten Feld von Excel exportiert, aber die Vorlage docx-Datei wird nun auch mit den Daten von Excel gespeichert, was dazu führt, dass die Ergebnisse später nicht mehr korrekt funktionieren. Alle Excel-Felder der nächsten Zeile werden aus irgendeinem Grund alle an den Start der Vorlage angehängt.
Bitte helfen Sie mir diesen Code zu korrigieren, so dass jedes Mal, wenn die Schleife korrekt ausgeführt wird. Das Wunschergebnis ist, dass jede Reihe von Excel nur in eine neue PDF-Datei exportiert wird und die Vorlage docx intakt bleibt.
Danke.
Sub ReplaceText()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim z As Integer
Set wApp = CreateObject("Word.Application")
wApp.Visible = True
For z = 3 To 6
Set wDoc = wApp.Documents.Open("D:\test.docx")
With wDoc
.Application.Selection.Find.Text = "TIEU_DE"
.Application.Selection.Find.Execute
.Application.Selection = Range("B" & z)
.Application.Selection.EndOf
.Application.Selection.Find.Text = "ENGLISH"
.Application.Selection.Find.Execute
.Application.Selection = Range("C" & z)
.Application.Selection.EndOf
.Application.Selection.Find.Text = "tenTG"
.Application.Selection.Find.Execute
.Application.Selection = Range("D" & z)
.Application.Selection.EndOf
.Application.Selection.Find.Text = "Noidung"
.Application.Selection.Find.Execute
.Application.Selection = Range("E" & z)
.Application.Selection.EndOf
.SaveAs2 "D:\test.pdf", 17
.Close SaveChanges = False
End With
Next z
End Sub
Dank der folgenden Antworten wird mein Problem gelöst durch: Erstens, mit ".Close SaveChanges: = False"; und zweitens "dotx as" als Vorlagendateiformat anstelle von "docx" verwenden –