Hallo,
bei der Übergabe eines Parameters von Word 2010 zu einer VB6-Applikation mittels Call-Anweisung erscheint die Fehlermeldung "Objektvariable oder With-Blockvariable wurde nicht festgelegt".
Beim Debuggen im Word-Dokument wird auf das Statement "Call g_Adresse.gb_Aktionausfuehren(1)" verwiesen.
Wir rufen von einer VB6-Applikation eine Word 2010 Dokumentenvorlage (DOTM) auf und speichern das Dokument im Word 2010-Format DOCM ab.
Das DOCM-Format wird benötigt für die erneute Bearbeitung (Korrekturen etc.). Die Steuerung des Word-Dokuments erfolgt ausschließlich aus der VB6-App und nicht im Word Dokument (Speichern, Senden etc.).
Dafür wurde die Word-Dokumentenvorlage gehärtet:
- Nur die Menübefehle sind noch aktiv, die für die Bearbeitung des Word-Dokuments benötigt werden.
- Allen nicht benötigten HotKeys wurden entfernt.
- Alle Standard-Ribbons werden ausgeblendet.
- Ein neues Ribbon wurde mittels XML-File erstellt. Das Ribbon enthält ein paar Buttons (Verlassen, Speichern, Drucken etc.) und ein paar Word-interne Ribbon-Befehle. Je nachdem, welcher Button in dem Ribbon gedrückt wurde, wird ein kleines Makro im Word-Dokument ausgeführt.
Die Button-Makros im Word-Dokument haben den gleichen Aufbau und übergeben im Prinzip nur einen Parameter an die VB6-Applikation. Dieser Parameter wird von der VB6-Applikation ausgewertet und die entsprechende Weiterverarbeitung wird aus der VB6-App gestartet.
Beispielmakro in der Word 2010 Dokumentenvorlage (DOTM):
Puiblic Sub Main(control as IRibbonControl)
Dim objword As Word.Application
Dim dic As Word.Document
Set doc = ActiveDocument
System.Cursor = wdCursorWait
g_Zustand = 0
'Aktion 1 = Speichern
Call g_Adresse.gb_Aktionausfuehren(1) <<<--- Übergabe des Parameters (Zahl in der Klammer)
System.Cursor = wdCursorNormal
Set g_Adresse = Nothing
End Sub
Die beiden öffentlichen Variablen 'g_Adresse' und 'g_Zustand' sind in einem eigenen Modul im Deklarationsbereich deklariert (z.B.: Public g_Adresse as Object).
Im VB-Project ist der Verweis auf die 'Microsoft Office 14.0 Object Library' gesetzt.
Das Word-Dokument wird auch korrekt erstellt, nur die besagten Buttons funktionieren nicht.
Hat jemand eine Idee, wasch ggf. in den Makros innerhalb der Word-Dokumentenvorlage anpassen muss, damit die Rückgabe der Steuerung von Word 2010 an de VB6-App funktioniert?
Eine interessante Nebenerscheinung habe ich noch entdeckt:
Wenn ich das Speicherformat in der VB6-App von DOCM (FileFormat:=wdFomatXMLDocumentMacroEnabled) auf DOTM (FileFormat:=wdFomatXMLTemplateMacroEnabled) umstelle, funktioniert die Steuerung und Übergabe von Word 2010 an die VB6-App einwandfrei.
Ich bin für jeden Hinweis dankbar
Gruß
|