Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Neues Dokument aus Vorlage erstellen, Te

Neues Dokument aus Vorlage erstellen, Te
24.07.2021 23:28:42
Simon
Hallo zusammen,
nachdem ich nun einen ganzen Tag mich daran versucht habe und nicht die richtige Lösung gefunden habe, ist das Forum meine letzte Hoffnung.
Was möchte ich erreichen?
Ich habe eine Word Vorlage (.dotm Datei), anhand derer ich ein neues Dokument erstelle.
Im neuen Dokument soll dann ein bestimmter Text ausgetauscht werden durch einen anderen Wert.
Die Datei soll dann mit dem ersetzten Text gespeichert werden.
Das klappt bereits:
- Erstellen der neuen Datei
- Speichern der neuen Datei
Folgendes passiert, wenn ich versuche, Text zu ersetzen:
Der zu ersetzende Text wird in der Vorlage ersetzt. Die neue Datei bleibt unberührt.
Was habe ich probiert, um das Problem zu lösen?
- Aktivieren der Word Instanz, in der das neue Dokument ist
- Selection und Range setzen (schwierig für mich zu kontrollieren, ob das richtige im Selection Object ist oder nicht)
So sieht mein Code aus:

'Platzierungsdatei öffnen
Set excel = CreateObject("excel.application")
excel.Workbooks.Open FileName:=pfadUrkunden
'Word Instanz öffnen
Dim wdDocument As Object
Dim Word As Object
Set Word = CreateObject("Word.Application")
Do While excel.Worksheets("TN").Cells(iIndex, 1).Value  ""
sName = excel.Worksheets("TN").Cells(iIndex, 1).Value
Set wdDocument = Word.Documents.Add(vorlagePfad)
Word.Visible = True
'[Vorname Nachname] ersetzen
Word.Activate
ActiveDocument.Shapes.Range(Array("Textfeld 2")).Select
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "[Vorname Nachname]"
.Replacement.Text = sName
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ausgabeOrdner = ausgabeOrdner & "\" & sName
wdDocument.SaveAs (ausgabeOrdner)
'+55 um nur einen Eintrag zu testen
iIndex = iIndex + 55
Loop
Word.Quit
Set Word = Nothing
excel.Quit
Ich habe Office 365 und versuche das Programm aus der .dotm Datei zu starten.
Ich bitte um Hilfe und freue mich über jede Idee!
Vielen Dank schonmal!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
würdest du bitte...
25.07.2021 00:03:50
Werner
Hallo,
...deine Beiträge in den verschiedenen Foren untereinander verlinken.
Danke
Werner
AW: Neues Dokument aus Vorlage erstellen, Te
25.07.2021 10:08:10
EtoPHG
Hallo Simon,
Verschiebe den Codeteil des Ersetzens, nach dem SaveAs.
Gruess Hansueli
AW: Neues Dokument aus Vorlage erstellen, Te
25.07.2021 12:33:23
Simon
Hallo Hansueli,
vielen Dank für die Antwort.
Ich habe das Ersetzen nach dem Speichern eingefügt, also deinen Rat befolgt.
Es wird aber immernoch in der Vorlagedatei (aus der ich das Makro aufrufe) der Text ersetzt, die neue Datei bleibt unverändert.
Hast du eine Idee, wie ich das Problem gelöst bekomme?
Liebe Grüße, Simon
AW: Neues Dokument aus Vorlage erstellen, Te
25.07.2021 15:34:41
ralf_b
möglicherweise nutzt du nicht das richtige Objekt.
So aus dem Stehgreif heraus ist das für mich nicht 100%ig nachvollziehbar. Habe wenig Erfahrungen mit Word-Excelkombis.
Doch wenn du schon wdDocument erzeugst, dann nutze es auch. wdDocument.Shapes.Range.......
Auf Verdacht: Das Visible und Activate wird nicht benötigt wenn du das wdDocument -Objekt nutzt. Is ja egal ob du Word siehst. VBA braucht keinen Monitor.
Durch das Activate wird evtl. die Vorlagedatei aktiviert und nicht die daraus erstellte Arbeitsdatei. Diese ist wahrscheinlich analog wie Mappe1 bei Excel eine Datei ohne Speicherort. Erst das Speichern macht daraus etwas Greifbares.

Set wdDocument = Word.Documents.Add(vorlagePfad)
Word.Visible = True
'[Vorname Nachname] ersetzen
Word.Activate
ActiveDocument.Shapes.Range(Array("Textfeld 2")).Select
gruß
rb
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige