AW: Word ignoriert beim Einfügen die Textmarke
19.12.2004 01:25:47
Conrad
Hier nochmal der Beispielcode, welcher mir empfohlen wurde. Auch da funktioniert es nur bei normalem Text. Die Tabelle schreibt er immer an den Anfang d. Dokuments.
****************************************************************************************
Sub Word_Dokument_von_Excel_aus_steuern()
Dim myWord As Object
'Fehlerroutine für die Objectabfrage aktivieren
On Error Resume Next
'Abfragen einer besthenden WORD-Instanz um wiederholtes starten zu verhindern
'9 = Word 2000, 10 = Word XP
Set myWord = GetObject("Word.Application.10")
If Err.Number <> 0 Then
'Fehlervariable leeren wenn Instanz noch nicht besteht
Err.Clear
'Zuweisung der Instanz
Set myWord = CreateObject("Word.Application.10")
'Instanz öffnen
'Um das ganze etwas im Hintergrund laufen zu lassen
'kann man den Status "wdWindowStateMinimize" verwenden
myWord.Visible = True: myWord.WindowState = wdWindowStateMaximize
Else
'Instanz besteht bereits
myWord.Activate
'Instanz in der Vordergrund bringen oder
'mit "wdWindowStateMinimize" im Hintergrund ausführen
myWord.Visible = True: myWord.WindowState = wdWindowStateMaximize
End If
'Hier muss der der Dateiname stehen der verwendet werden soll
'Es sollte aber eine Dokumentvorlage verwendet werden
'um keine Änderungen an den Textmarken beim einfügen zu verursachen
myWord.Application.Documents.Open "C:\Test.doc"
'Kopieren des EXCEL-Bereiches
Worksheets("Tabelle1").Range("A1:B10").Copy
'Zur jeweiligen Textmarke springen wegen des Einfügens
'Hier im Beispiel "A1"
myWord.GoTo What:=wdGoToBookmark, name:="A1"
'Einfügen des kopierten Bereiches
myWord.Selection.Paste
'Hier noch wie verschiedene Zellinhalte an verschiedene
'Textmarken zugewiesen wird, ohne diese jeweils anzuspringen
'Die Textmarken "a1, a2, a3" müssen im Dokument bereits bestehen
'Dann werden nach dem öffnen des Dokuments die Werte von Tabelle1
'A1, B1 und C1 in die jeweiligen Textmarken geschrieben
myWord.ActiveDocument.Bookmarks("a1").Range.Text = Worksheets("Tabelle1").Range("A1")
myWord.ActiveDocument.Bookmarks("a2").Range.Text = Worksheets("Tabelle1").Range("B1")
myWord.ActiveDocument.Bookmarks("a3").Range.Text = Worksheets("Tabelle1").Range("C1")
'Das aktive WordDokument drucken
'myWord.ActiveDocument.PrintOut
'Dokument schliessen mit speichern
myWord.ActiveDocument.Close savechanges:=True
'Speichern mit fixem Namen
'myWord.ActiveDocument.SaveAs Filename:="DokumentName", FileFormat:=wdFormatDocument
'Speichern mit Variable
'myWord.ActiveDocument.SaveAs Filename:=Variable, FileFormat:=wdFormatDocument
'WORD-Instanz schliessen
myWord.Application.Quit (True)
'Variable leeren
Set myWord = Nothing
End Sub
****************************************************************************************