Word2007: Dok.wechsel per 'Document('x').Activate

…funktioniert nicht.

Guten Morgen zusammen,

der Titel sagt vieles aber noch nicht alles :smiley:

Ich habe ein kleines Makro in eine Wordvorlage (nennen wir sie Dokument1.dot) gebastelt.

Wird Dokument1.dot aufgerufen wird eine Userform gestartet, über die ggfls per

Documents.Open FileName:="C:\Vorlagen\Anlage1.dot" 

ein zusätzliches Dokument geöffnet wird (Soll Anlage1 geöffnet werden? Ja / Nein). Der Dateiname wird ausgelesen und in ein Textfeld „NameAnlage“ im Dokument1.dot eingetragen (also Anlage1.dot in NameAnlage)

Diese Seite kann dann gesondert bearbeitet werden (fest einfügen in Dokument1.dot ist aus verschiedenen Gründen nicht möglich / soll nicht gemacht werden).

Nach der Bearbeitung sollen unsere Kollegen das Dokument1.dot schließen. Durch das schließen werden folgende Aktionen ausgelöst (über Sub Document_Close)

Sub Document\_Close()
If ActiveDocument.ProtectionType wdNoProtection Then ActiveDocument.Unprotect
WordBasic.Call "wEFW000.DATENFELDER\_LESEN", "NameAnlage", NameAnlage, 2
If ActiveDocument.ProtectionType = wdNoProtection Then ActiveDocument.Protect Type:=wdAllowOnlyFormFields
frage = MsgBox("Möchten Sie das Anschreiben und die Anlage ausdrucken?", vbYesNo)
If vbYes = True Then
 ActiveDocument.PrintOut
**Windows(NameAnlage).PrintOut**
 Windows(NameAnlage).Close
End If

End Sub

Beim Fett markierten Teil erhalte ich immer die Fehlermeldung "Laufzeitfehler ‚5941‘:
Das angeforderte Element ist nicht in der Sammlung vorhanden.

Die Datei aus „NameAnlage“ ist jedoch auch weiterhin geöffnet.

Wenn ich auf „Hilfe“ klicke erhalte ich nur einen weißen Bildschirm.

Könnt ihr mir helfen das zu lösen?

Herzlichen Dank

Lieben Gruß

LadyN

Hallo, LadyN!

Sub Document\_Close()
If ActiveDocument.ProtectionType wdNoProtection Then
ActiveDocument.Unprotect
WordBasic.Call "wEFW000.DATENFELDER\_LESEN", "NameAnlage",
NameAnlage, 2
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields
frage = MsgBox("Möchten Sie das Anschreiben und die Anlage
ausdrucken?", vbYesNo)
If vbYes = True Then

Das sollte mehr „If frage=vbYes Then“ heißen, vermute ich.

 ActiveDocument.PrintOut
**Windows(NameAnlage).PrintOut**
 Windows(NameAnlage).Close
End If

End Sub

Dann schau mal genauer nach (über Debugger), was denn in NameAnlage drinsteht. Ist das wirklich ein Text? Hat das Fenster auch den entsprechenden Text als Titel? Ich würde hier eher mit einem Document-Objekt arbeiten. Ggf. kannst Du auch gleich ein globales Document-Objekt setzen, wenn Du die Anlage öffnest, und dieses auch beim Schließen wieder verwenden.

Gruß, Manfred