Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
224to228
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kann ein Excel-ComAddIn in VB-Script verwendet wer

Kann ein Excel-ComAddIn in VB-Script verwendet wer
03.03.2003 13:52:18
Georg
Hallo,

Kann eine Funktion in einem Excel-ComAddIn von einem VB Script aufgerufen werden?

Neben der Möglichkeit das AddIn direkt in Excel über einen Button aufzurufen, möchte ich in einem Script eine Datei einer AddIn-Funktion übergeben, welche ein fremdes Dateiformat in ein Excelformat umwandelt und danach Excel öffnet.

Hier der genaue Hintergrund für meine Frage:

Bis jetzt wurde für einen Kunden ein Excel-Makro verwendet um MSCONS-Dateien(ist ein Ableger von EDIFACT zur Darstellung von Strommesswerten), welche in einem eigenen Format vorliegt in ein lesbares Excelformat umzuwandeln.

Zusätzlich gibt es die Möglichkeit, wenn der Benutzer auf die MSCONS-Datei im Explorer doppelklickt , dass Excel automatisch geöffnet wird und die Datei automatisch umgewandelt wird.

Das wird damit erreicht, das man in der Registry den Dateityp mit der Endung edi bekannt gibt. Zusätzlich muss man in der Registry definieren, welches Kommando verwendet wird, um die Datei zu öffnen.

Dieses Kommando steht in der Registry an folgender Stelle:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\edifile\shell\edit\command
Als Kommando wurde ein VBS (VB-Script) definiert, welches wie folgt aussieht:

Set objArgs = WScript.Arguments
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
'Excel.Interactive = True
Excel.Workbooks.Open "C:\Programme\Firma\Produkt\MSCONSConverterA.xla"
'Set Excel = GetObject("C:\Programme\Firma\Produkt\MSCONSConverterA.xla")
Excel.Run "ExcelAuswertung", objArgs(0)
Excel.ScreenUpdating = True
Set Excel = Nothing

Mit Excel.Run wird die Umwandlung gestartet, wobei ExcelAuswertung eine Makrofunktion ist und objArgs(0) ist der Dateiname mit Pfad.

Nun zu meiner eigentlichen Frage:
Die Funktionalität wurde aus verschiedenen Gründen in ein Excel-ComAddIn verlegt.
Was muss ich tun, damit von einem VBS dieses Funkion aus dem AddIn aufrufen kann?
Die Funktionalität des alten Makros wurde im wesentlich in ein Modul des COM-AddIns geschoben und Workbook und Worksheet Variablen über das Connectobjekt gestzt.

Vielen Dank für die Hilfe!

P.S.:Ich hoffe, die Frage ist nicht unklar und zu lange,aber das Thema ist nicht einfach für mich.



5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Kann ein Excel-ComAddIn in VB-Script verwendet wer
03.03.2003 14:55:56
Hans W. Hofmann

Hallo Georg,

das ist jetzt eine wesentlich griffigere Frage.
Ich glaube das neien. Dazu müßte in VBS ein Verweis auf die (angemeldete) Dll gesetzt werden. Geht so was?

Da das Teil letztendlich irgendwie was ActiveX-Artiges ist, könnte man evtl. mal versuchen das Teil über die GUID irgendwie mit VB-Script zu verheiraten - so, wie man ActiveX-Controls einbindet. Ist aber sicher viel Neuland und nix genaues woas ma net ...

Wenn ja, dann kannst Du mit
Dim blabla as New KlassenNameInComAddin
einen Verweis auf die Eigenschaften/Methoden Deiner COM-Klasse bekommen. Da aber COMAddins spezifisch auf die Office-Reihe designed sind, wird das net gehen - behaupte ich mal. Das das in VBA geht ist eh nur ein Versehen und nicht offizell dokumentiert.

Wieso machst Du einen neuen Thread auf?

Gruß HW

Anzeige
Lösung gefunden
03.03.2003 15:04:18
Georg

Hallo!

Ich habe einen neuen Thread geöffnet, damit die Frage klarer wird und sich potentielle Helfer nicht durch unsere Diskussion müsahm durchsurfen müssen.

Habe folgende Möglichkeit gefunden:
- Im Com-AddIn wird eine eigene Klasse definiert
- Diese Klasse hat verschiedene Methoden, zB DatenEinlesen
- Weiters gibt es Properties für Workbook und Worksheet

Das hat den Vorteil, dass man die Klasse sowohl im AddIn alsauch in einem Script oder einer anderen Anwendung verwednen kann:

Im Connect-Objekt des AddIns:
- Wird die Klasse instanziert
- Die Properties Workbook und Worksheet gesetzt
- Die Funktion Einlesen aufgerufen

Im Script oder einer anderen Anwednung
- Ein Excelobjekt instanziert
- Ein Workbook und Worksheet angelegt
- Die Klasse vom AddIn instanziert
- Die Properties Workbook und Worksheet gesetzt
- Die Funktion Einlesen aufgerufen

Mein Irrglaube war folgender:
Die Funktion Einlesen, welche vorher in einem Modul des AddIns definiert war, ist nicht generell global, sondern nur innerhalb des AddIns.
Somit muss man eine Klasse definieren mit Public Funktionen.

Trotzdem Vielen Dank für Deine Hilfe

Georg!

Anzeige
Re: Lösung gefunden
03.03.2003 15:15:48
Hans W. Hofmann

Bist Du da nicht schon einen Schritt zu weit?
Wie bekommst Du via VBS Zugriff auf das COMAddin?
Ein Connect kann ja wohl nur über eine Comfähige Officeanwendung ausgelöst werden - das war aber nicht Gegenstand der Fragestellung, oder. Wenn das Teil mal angestoßen wurde, dann ist das Problem ja eigentlich gelöst - sofern man sein Zeugs in Klassen eingebaut hat...


Gruß HW

Re: Lösung gefunden
03.03.2003 15:21:14
Georg

Hallo!

Ich betrachte die selbstdefinierte Klasse im AddIn als selbstständiges Modul, das sowohl im AddIn selbst, als auch von extern instanziert werden kann.

Von extern wird es instanziert über Verweise, oder im Fall von VBS wird es mit CreateObject einfach instanziert und das ConnectObjekt einfach links liegen gelassen.
Das Worksheetobjek wird ja von aussen gestezt über die Properties.

Ist zwar nicht die ursprüngliche Frage, aber eine rasche und wiederverwendbare Lösung.

Ich glaube das Connectobjekt ist nur von Officeprodukten selbst ansprechbar. Wüßte keinen Weg es von aussen anzusprechen.
Im Objektbrowser sind die Methoden aufjeden Fall unsichtbar.

LG, Georg!


Anzeige
Re: Lösung gefunden
03.03.2003 15:27:36
Hans W. Hofmann

Ajee, einfach CreateObject.
Naja, manchmal denkt man zu kompiliziert :-).
Der Trick wandert sofort in mein Archiv...

Gruß HW


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige