PDA

Vollständige Version anzeigen : Runtime Error bzgl. "Word schließen" beim Öffnen eines Dokuments via Add-In


judith_21
14.07.2009, 20:58
Hallo zusammen,

ich habe ein Problem mit einem Word-Addin, das ich programmiert habe. Wenn ich Word starte und über einen Button in einer Menüleiste mein Add-In starte, erhalte ich bei der Verarbeitung der Informationen, die der User in verschiedenen Formularen eingegeben hat, einen Runtime Error.

Der Runtime Error passiert beim Aufruf des folgenden Codes:
Set Vorlage = Application.Documents.Open(WirdAusVariableZusammengebaut, , True, False)
Vorlage.Activate


Der Inhalt des Runtime Errors:
"Run-time error '5479': You cannot close Microsoft Office Word because a dialog box is open. Click OK, switch to Word, and then close the dialog box."

Macht doch gar keinen Sinn, ich habe doch überhaupt nicht versucht, irgendwas zu schließen?! Die offene "DialogBox" ist mein Addin (ein Formular, das modal geöffnet ist).

Um das Ganze noch seltsamer zu machen, kommt diese Fehlermeldung nur, wenn man Word "frisch" gestartet hat und noch nichts darin gemacht hat, außer das Add-In zu starten. Wenn man das automatisch geöffnete leere "Document1" vorher schließt oder ein paar Buchstaben dort eingibt, funktioniert alles problemlos...*kopfkratz*

Außerdem kann ich "Debug" nicht verwenden, weil es sich um ein AddIn handelt, von dem man den Code nicht direkt aufrufen kann. Wenn ich die dot-Datei mit dem Addin öffne, kommt es nicht zu diesem Fehler (weil ja dann Word nicht mehr "frisch" gestartet ist).

Ich habe das Gefühl, Word möchte das "Document1" aus irgendeinem Grund schließen. Mein Code ist es definitiv nicht. Aber es ist doch so, dass sich beim "normalen Gebrauch" von Word (also nicht via VBA) dieses automatisch erstellte "Document1" selbst schließt, wenn man es nicht verwendet hat und dann eine andere Datei öffnet, oder?

Wie kann ich diesen Run-time-error verhindern? Hat jemand eine Idee?

Danke vorab und Gruß,
Nadine

PapaSchlumpf
15.07.2009, 02:14
Hi,

nur um das richtig zu verstehen:
Du öffnest eine Vorlage als Dokument und in dieser Vorlage ist ein Formular (Userform?), dass wie gestartet wird?

Klingt irgendwie seltsam.

Aber ohne den genauen Code wird es schwierig.

Warum bindest du nicht das AddIn als richtiges Add-In ein (z.B. in den Startup-Ordner) und rufst dann nur die DialogBox aus dem AddIn auf?

Gruß
PS

judith_21
15.07.2009, 20:18
Hallo,

nein, ich starte die dot-Datei nicht als Dokument, sondern als Add-In. Bzw. ich starte sie eigentlich gar nicht manuell, sondern sie ist im Startup-Ordner von Word hinterlegt und startet beim Aufrufen von Word automatisch mit. In dieser dot-Datei ist eine Menüleiste integriert, über die sich das Add-In aufrufen lässt.

Beim Start von Word sieht man halt das normale "Document1" und die zusätzliche Menüleiste mit dem Button, um das Add-In aufzurufen.

Das Add-In selbst besteht aus diversen VBA-Formularen und -Modulen. Und auf einem dieser Formulare ist eben ein Button, der (u.a.) eine doc-Datei öffnet. Und genau bei dem Open-Befehl passiert der vorher beschriebene Fehler.

Ist das Problem jetzt klarer geworden?

Gruß,
Nadine

PapaSchlumpf
16.07.2009, 06:31
Hi,

ohne den Code hinter dem Button, der den Fehler auslöst zu sehen wird es eine schwierige Sache.
Hast du irgendwo ein
Unload
zum Beenden einer Userform?

Wenn mit
Set Vorlage = Application.Documents.Open(WirdAusVariableZusammengebaut, , True, False)
das erste eigentliche Dokument geöffnet wird, wird das Standard-Dokument "Dokument1" (wenn du vermutlich Word2003 verwendest) geschlossen.
Setze mal testweise vor diese Zeile ein
ActiveDocument.Saved=true

Tritt der Fehler weiterhin auf?

HTH
PS

judith_21
16.07.2009, 21:08
Hallo PapaSchlumpf,

also
ActiveDocument.Saved = True
hat nicht geholfen. Aber dafür hat
ActiveDocument.Saved = False
geholfen.

Blöd von mir, darauf hätte ich auch selbst kommen können. Ich muss Word ja nur vorgaukeln, das "Document1" sei geändert worden, dann wird es nicht mehr automatisch geschlossen. Und das erreicht man ja eigentlich ziemlich einfach mit o.g. Code. ;)

Vielen Dank für deine Hilfe. :top:

Gruß,
Nadine