dazu findest Du einen sehr nützlichen Artikel auf der Site von WFlamme:
Auszug:
Die Automatisierung mit Microsoft Word hat einen Pferdefuß, der häufig nicht berücksichtigt wird: Generiert ein Programm eine neue, unsichtbare Word-Instanz und generiert der Benutzer danach manuell eine neue (aus seiner Sicht die erste) Word-Instanz, so verweisen beide auf dasselbe Objekt (Microsoft Knowledge Base Artikel Nr. Q188546).
Dim objWord as Variant
Set objWord=CreateObject({Word.Application})
objWord.Documents.Add {c:\temp\test.doc}
Debug.Print objWord.ActiveDocument.FullName 'liefert "c:\temp\test.doc"
'Tue irgendwas
'--> Benutzer betrachtet eine *.doc-Datei durch Doppelklick im Windows Explorer, z.B. c:\temp\malgucken.doc
'Tue irgendwas ist beendet
Debug.Print objWord.ActiveDocument.FullName 'liefert "c:\temp\malgucken.doc"
Der erforderliche Workaround sieht so aus, daß zwei Word-Instanzen erstellt werden, dann wird die erste (die, die vom Anwender geöffnet worden wäre) sofort wieder zerstört. Die zweite Instanz ist dann wirklich unabhängig und kann vom Code exklusiv genutzt werden.
Nachdem die Bookmark-basierten Lösungen ja nun ausreichend gut im Web dokumentiert sind, wollen wir zunächst einmal die Alternativlösung mittels Dokumentvariablen betrachten. Eine solche Lösung implementiert man am elegantesten als neue Klasse, die man dann in den verschiedensten Projekten wiederverwenden kann. Das Grundgerüst dieser Klasse soll dabei folgendes leisten:
der Konstruktor der Klasse muß eine unabhängige Word-Instanz bereitstellen, die nicht mit anderen Instanzen kollidiert
auf Bais einer zu übergebenden Feldliste soll eine .dot-Vorlage mit Dokumentvariablen-Feldern generiert werden; diese kann später unter Word nachbearbeitet/nachformatiert werden
auf Basis dieser .dot-Vorlage soll ein neues Word-Dokument erzeugt werden
die Dokumentvariablen des Word-Dokuments sollen beschrieben werden können
die Felder des Word-Dokuments müssen aktualisiert werden können
diese Vorgänge sollen im Hintergrund ablaufen, um den Benutzer nicht abzulenken
das Dokument soll ausgedruckt werden können
wenn die Word-Instanz nicht mehr benötigt wird, soll sie komplett entladen werden (Destruktor)
Die Übergabe des Vorlagennamens kann unter LotusScript als Argument des Konstruktors erfolgen, dies ist jedoch in VB/VBA nicht möglich. Um LotusScript- und VBA-Version einheitlich zu halten wurde stattdessen eine eigene Methode der Klasse implementiert. Hier nun zunächst die Umsetzung in eine einfache LotusScript-Klasse als Muster. Diese wird beispielsweise in eine ScriptLibrary wfWordInterface untergebracht (ich stelle meinen Library-Namen i.d.R. meine Initialien voran, um sie von den Libraries anderer einfach unterscheiden zu können):
Quelle:
http://www.sns1.de/partner/flamme/wflamme.nsf/Shortcut/WordInterface1