von DarkSoul » Di, 24.03.2009 13:14
Hallo,
erstmal zur Vorgeschichte:
Ich sitze hier gerade an dem Problem das wir eine geringfügige Menge an Vorlagen (nicht gezählt, aber definitiv Vierstellig... Ich arbeite in einer öffentlichen Verwaltung, daher die Menge) haben die wir derzeit überarbeiten. Da die Vorlagensammlung über Jahre hinweg gewachsen ist sieht sie natürlich auch entsprechend chaotisch aus. Wir haben jetzt angefangen alles zu überarbeiten bzw. zu aktualisieren. Da wir derzeit noch MSOffice 2003 einsetzen und das interne VBA nicht so komfortabel und umfangreich ist wie wir es hier benötigen haben wir einfach zum Test den Makrocode einer Vorlage komplett in eine DLL ausgelagert und in VB.NET nachprogrammiert. In der Vorlage wird nun nur noch ein Verweis zur DLL angelegt, ein Objekt deklariert und dieses dann zwecks "Füllung" seiner Properties an eine Funktion der DLL übergeben. Nachdem das Objekt die Daten enthält die wir benötigen sorgt VBA lediglich noch für die Einsortierung in entsprechende Formularfelder, Textmarken o.ä. Das funktioniert soweit perfekt.
Ein weiterer Grund für die Auslagerung in eine DLL war das wir nicht wissen was nach Office 2003 kommt. Es kann sein das wir Office 2007 oder auch Open Office bekommen. Eine Entscheidung ist noch nicht 100%ig getroffen. Genauso gut kann es sein das beide Welten eine Weile parallel existieren. Somit wäre die DLL die perfekte Lösung um den Code nur einmal schreiben zu müssen und in mehreren "Welten" parallel zu nutzen. Das Design der Vorlagen lässt sich ja relativ problemlos importieren.
Nun zu meinem Problem:
Wie komme ich unter OOo-Basic (oder von mir aus auch Java) an die Funktionen und Objekte der DLL ran? Sie ist als COM-Objekt im System registriert und unter MSOffice brauche ich ja nur einen Verweis anlegen. Leider schaffe ich es nicht ansatzweise unter OpenOffice auf diese DLL, bzw ihre Klassen und Funktionen zu zu greifen.
Kann mir jemand vielleicht einen Tip geben wie ich vorgehen muß bzw. falls es nur ein paar Zeilen sind wie ein entsprechender Code aussehen müsste? Für Hilfe wäre ich sehr dankbar!!!
Grüße,
Carsten
Hallo,
erstmal zur Vorgeschichte:
Ich sitze hier gerade an dem Problem das wir eine geringfügige Menge an Vorlagen (nicht gezählt, aber definitiv Vierstellig... Ich arbeite in einer öffentlichen Verwaltung, daher die Menge) haben die wir derzeit überarbeiten. Da die Vorlagensammlung über Jahre hinweg gewachsen ist sieht sie natürlich auch entsprechend chaotisch aus. Wir haben jetzt angefangen alles zu überarbeiten bzw. zu aktualisieren. Da wir derzeit noch MSOffice 2003 einsetzen und das interne VBA nicht so komfortabel und umfangreich ist wie wir es hier benötigen haben wir einfach zum Test den Makrocode einer Vorlage komplett in eine DLL ausgelagert und in VB.NET nachprogrammiert. In der Vorlage wird nun nur noch ein Verweis zur DLL angelegt, ein Objekt deklariert und dieses dann zwecks "Füllung" seiner Properties an eine Funktion der DLL übergeben. Nachdem das Objekt die Daten enthält die wir benötigen sorgt VBA lediglich noch für die Einsortierung in entsprechende Formularfelder, Textmarken o.ä. Das funktioniert soweit perfekt.
Ein weiterer Grund für die Auslagerung in eine DLL war das wir nicht wissen was nach Office 2003 kommt. Es kann sein das wir Office 2007 oder auch Open Office bekommen. Eine Entscheidung ist noch nicht 100%ig getroffen. Genauso gut kann es sein das beide Welten eine Weile parallel existieren. Somit wäre die DLL die perfekte Lösung um den Code nur einmal schreiben zu müssen und in mehreren "Welten" parallel zu nutzen. Das Design der Vorlagen lässt sich ja relativ problemlos importieren.
Nun zu meinem Problem:
Wie komme ich unter OOo-Basic (oder von mir aus auch Java) an die Funktionen und Objekte der DLL ran? Sie ist als COM-Objekt im System registriert und unter MSOffice brauche ich ja nur einen Verweis anlegen. Leider schaffe ich es nicht ansatzweise unter OpenOffice auf diese DLL, bzw ihre Klassen und Funktionen zu zu greifen.
Kann mir jemand vielleicht einen Tip geben wie ich vorgehen muß bzw. falls es nur ein paar Zeilen sind wie ein entsprechender Code aussehen müsste? Für Hilfe wäre ich sehr dankbar!!!
Grüße,
Carsten