Hallo zusammen,
ich habe folgendes Problem:
Ein bestehendes VBA-Addin für Excel soll portiert werden auf C# (COM-Addin).
In dem VBA-Addin wird ein OLE-Objekt instanziiert mit
Set FDBOLE = CreateObject("fdbole.document")
wie kann ich sowas in C# machen? Hier scheint es etwas vergleichbares wie CreateObject nicht zu geben? Wie kann ich ein OLE-Objekt instanziieren?
Vielen Dank für Eure Hilfe!
Marcel Hazrat
Prinzipiell funktioniert das so, dass du die COM-Library in die Refrenzen des Visual Studio-Projektes einbindest.
Dabei wird eine WrapperKlasse für das COM-Objekt in C# erzeugt. Es wird ein Namespace (vermutlich was mit fdbole) erzeugt, den du über using einbinden mußt. Über den Klassen-Explorer kannst du sehen, welche Interfaces das COM-Objekt bereitstellt.
Diese Klasse kannst du wie eine ganz normalen C#-Klasse nutzen.
MeineOleKlasse oleObject = new MeineOleKlasse();
Hallo,
danke für Deine Antwort....das hatte ich inzwischen auch rausgefunden und ich habe es auch schon fleißig eingesetzt. Allerdings hat es am Ende doch nicht funktioniert. Der angeschlossene OLE-Server hat einige hundert Felder. Manche von Ihnen werden korrekt übertragen, andere vom gleichen Typ (z.B. string) nicht. Es treten verschiedene Interop.Execptions und TypeCast.Execptions auf.
Ich habe auch versucht, die Primary Interop Assembly manuell zu erstellen. tlbimp.exe und dann durch den Disassembler. Dann stand ich vor 8400 Zeilen Code, in dem ich zudem auch keine offensichtlichen Probleme bei den Typumwandlungen feststellen konnte.
Bin jetzt umgeschwenkt und programmiere den OLE-Anschluss unter VB.NET und unmanaged. Das ist zwar nicht so cool, funktioniert aber. 😁
Beste Grüße,
Marcel