Microsoft Excel

Herbers Excel/VBA-Archiv

Übergabe an Word

Betrifft: Übergabe an Word
von: Michael
Geschrieben am: 13.04.2003 - 10:27:23

Hallo Excler

Habe mir ein Makro zur Übergabe an Word gebastelt.

Das Makro nimmt as der Tabelle "Word" aus Spalte A den
Namen der Textmarke und Aus Spalte B den Inhalt.

Ich trage den Wert aus der Spalte B in die vorhandene
Textmarke in das Word Dokument ein, und benenne nachher
die Textmarke (da sie durch den Eintrag gelöscht wird)
wieder richtig, da ich sie in einem Wordmakro wieder brauche.

Es funktioniert sehr gut, allerdings braucht das Makro für
ca. 300 Einträge ziemlich (ca. 45 sec) lange.

Meine Frage:
Gibts vielleicht Verbesserungsvorschläge ?

Sub Fetz_ins_Word
Dim WordObj As Word.Application
Dim WordDoc As Word.Document
Dim TM, Text As String
Dim a, Zeilen As Integer
Dim ws As Worksheet
On Error GoTo w
AppActivate "Microsoft Word"
Set WordObj = Word.Application
GoTo n
w:
Set WordObj = CreateObject("Word.Application")
n:
'Vorlage öffnen
Set WordDoc = WordObj.Documents.Add("D:\dot\Meindoc.dot")
'Textmarken auslesen
Set ws = Worksheets("Word")
Zeilen = ws.UsedRange.Row + ws.UsedRange.Rows.Count - 1
For a = 1 To Zeilen
TM = ws.Cells(a, 1).Text
Wert = ws.Cells(a, 2).Text
WordDoc.Bookmarks(TM).Select
WordDoc.Parent.Selection.TypeText Text:=Wert
WordObj.Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
WordDoc.Parent.Selection.Bookmarks.Add Name:=TM
Next
End Sub

Vielen Dank für Eure Mühe
Michael




  

Re: Übergabe an Word
von: Michael Scheffler
Geschrieben am: 13.04.2003 - 10:57:37

Hi,

was mir auffällt, ist, dass Du "Late Binding" verwendest: "CreateObject". Wenn Du sicher bist, dass Du immer auf die gleichen Bibliotheken zugreifst, mach lieber einen Verweis oben in der VBE auf das Word-Objekt-Modell und lass das "CreateObject" weg, verwende "Early Binding":
Dim WordObj As Word.Application
Set WordObj = New .Application

Innerhalb der Schleife ein "DoEvents" wirkt manchmal Wunder:
WordDoc.Parent.Selection.Bookmarks.Add Name:=TM
DoEvents
Next

Aber generell muss man sagen, dass die Automatisierung sehr langsam ist.

Gruß

Micha




  

Re: Übergabe an Word
von: Michael
Geschrieben am: 13.04.2003 - 11:05:29

Danke Micha

Werd' mal mit Stoppuhr ;-) testen.

lg
Michael



  

Re: Übergabe an Word
von: Michael
Geschrieben am: 13.04.2003 - 12:58:58

Hallo

(Für alle dies wissen wollen)

DoEvent bringt nix.

Set WordObj = New Word.Application

Bringt ca. 10 sec

lg
Michael