Thema Datum  Von Nutzer Rating
Antwort
Rot Call-Anweisung von Word 2010 zu VB6 schlägt fehl
25.03.2015 09:27:01 Thomas Mauritz
NotSolved

Ansicht des Beitrags:
Von:
Thomas Mauritz
Datum:
25.03.2015 09:27:01
Views:
1422
Rating: Antwort:
  Ja
Thema:
Call-Anweisung von Word 2010 zu VB6 schlägt fehl

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ß

Thomas Mauritz


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Call-Anweisung von Word 2010 zu VB6 schlägt fehl
25.03.2015 09:27:01 Thomas Mauritz
NotSolved