Herbers Excel-Forum - das Archiv
For Each Word.doc

|
Betrifft: For Each Word.doc
von: Felix
Geschrieben am: 27.10.2003 14:17:01
Hallo zusammen,
ich habe Projekt-Dokumente, die ich immer wieder verwenden möchte. Sie liegen in einem Ordner "Projektdokumente". In diesem Ordner liegt auch eine Excel-Dokument "Kennung". In diese Excel-Tabelle trage ich in bestimmte Zellen Informationen ein, die in alle Fußzeilen aller Word-Dokumente im Ordner "Projektdokumente" überführt werden sollen.
Die Kommunikation zwischen Excel und Word steht. Was mir jetzt noch zu meinem Glück fehlt, ist die richtige Syntax für den For Each-Befehl.
Wenn ich die Exceltabelle "Kennung" öffne, sollen automatisch nacheinander alle Word-Files aus dem Ordner "Projektdokumente" geöffnet werden und die Fußzeile beschriftet werden. Also ungefähr so (kritische Zeile habe ich mit "?" gekennzeichnet:
For Each Word.doc in "Projekdokumente" ?
Documents.Open ?
Set obj = ActiveDocument
obj.bookmarks("Projektnummer").Select
With Word.Application.Selection
.InsertAfter Projektnummer
End With
next
Vielen Dank für eure Mühen!
Felix

 |
Betrifft: AW: For Each Word.doc
von: Reinhard
Geschrieben am: 27.10.2003 18:29:07
Hallo Felix,
probiers mal aus.
Gruß
Reinhard
Sub t()
With Application.FileSearch
.LookIn = "c:\temp" ' anpassen an projektdokumente
.FileType = msoFileTypeWordDocuments
.Execute
Set myWord = CreateObject("Word.Application.9")
myWord.Visible = True
For Each Datei In .FoundFiles
myWord.Application.Documents.Open Datei
MsgBox Datei 'hier deinen Code einfügen was du mit Datei machen willst
myWord.Application.Documents.Close
Next Datei
End With
End Sub
Betrifft: AW: For Each Word.doc
von: Felix
Geschrieben am: 28.10.2003 11:20:52
Hallo Reinhard,
danke für deinen wirklich guten Tip. Leider habe ich nachwievor ein Problem. Genrell finde ich es sehr problematisch, wenn man von Excel auf Word zu greift. Den Verweis auf die Bibliothek Micosoft Word 9.0 Object Library habe ich hergestellt und folgeden Code in VB eingefügt:
Dim myWord As Word.Document
Sub zuweisen()
Dim Projektnummer As String
With Application.FileSearch
.LookIn = DieseArbeitsmappe.Path ' anpassen an projektdokumente
.FileType = msoFileTypeWordDocuments
.Execute
'Set myWord = CreateObject("Word.Application.9")
'myWord.Visible = True
For Each Datei In .FoundFiles
Documents.Open Datei
Set myWord = ActiveDocument
'hier deinen Code einfügen was du mit Datei machen willst
Projektnummer = DieseArbeitsmappe.Sheets(1).Cells(2, 2).Value
Word.Application.ActiveDocument.Bookmarks("Projektnummer").Select
myWord.Bookmarks("Projektnummer").Select
With Word.Application.Selection
.InsertAfter Projektnummer
End With
myWord.Application.Documents.Save
myWord.Application.Documents.Close
Next Datei
End With
End Sub
Die Anweisung: 'Set myWord = CreateObject("Word.Application.9") macht mir ständig Probleme, deshalb habe ich Sie rausgenommen. Ich weiß nicht genau was Sie macht, aber es klappt auch so wenn Word geöffnet ist.
Auch muss ich myWord auf dem Umweg Documents.Open Datei; Set myWord = ActiveDocument initialisieren. Sonst läuft es nicht.
So weit so gut. Aber an der Stelle Word.Application.ActiveDocument.Bookmarks; "Projektnummer").Select kommt die Fehlermeldung "#5941 Das angeforderte Element ist nicht in der Sammlung vorhanden"
Wenn ich diesen Code einsetze, dann läuft es problemlos durch. Leider verträft sich das nicht mit deiner For Anweisung:
Dim myWord As Word.Document
Sub zuweisen()
Dim Projektnummer As String
Word.Application.Documents.Open Filename:=DieseArbeitsmappe.Path & "\Test.doc"
Set myWord = ActiveDocument
'hier deinen Code einfügen was du mit Datei machen willst
Projektnummer = DieseArbeitsmappe.Sheets(1).Cells(2, 2).Value
Word.Application.ActiveDocument.Bookmarks("Projektnummer").Select
myWord.Bookmarks("Projektnummer").Select
With Word.Application.Selection
.InsertAfter Projektnummer
End With
'myWord.Application.Documents.Save
'myWord.Application.Documents.Close
End Sub
Ich hoffe du kannst mir weiter helfen und vielen Dank
Felix
Betrifft: noch offen
von: Reinhard
Geschrieben am: 31.10.2003 11:51:08
Hi Felix,
danke für die Rückmeldung.
Mit Wordzugriffen habe ich mich noch nicht beschäftigt und kann dir deshalb da noch nicht weiterhelfen.
Sorry, dass ich erst jetzt antworte.
Gruß
Reinhard