Hallo,

Thomas Weiland schrieb:
> echt? Werden wirklich teile von VBA unterstützt? Ich dachte bisher
> immer, das MS-Makros gar nicht gehen.

Doch das geht inzwischen zu Teilen.
Bis vor OOo 3.0 unterstützten einzelne OOo-Distributionen dieses
Feature, sowie OOo eher 'heimlich'(*) (ab ungefähr Version 2.4). Seit
3.0 wird das Ganze aber auch 'offiziell'(*) unterstützt.
VBA-Unterstützung gibt es bisher jedoch nur für Calc, was jedoch einen
erheblichen Vorteil bedeutet, z.B. für benutzerdefinierte Funktionen in
Calc. Zum Einen ist es dort so das Du nun beispieklsweise Funktionen die
auf rein nuerische Berechnungen zurückgreifen problemlos zum Laufen
bekommst, zum Anderen ergibt sich aber die Möglichkeit quasi Emulationen
für spezifische Calc-Funktionen/Makros zu schreiben, so das OOo mit mehr
als einer FEhlermeldung reagieren kann. Ein einfaches Beispiel dafür
ist:

Function DATEINAME()
On Error GoTo xls
pfad = ThisComponent.Location
teilen = Split(pfad, "/")
DATEINAME = teilen(UBound(teilen))
Exit Function
xls:
DATEINAME = ThisWorkbook.Name
End Function

(Siehe Kapitel 6.7.2 der Leseprobe von:
http://www.galileocomputing.de/1941)


Bedenke bitte das bei diversen Makro die nicht auf das Objektmodell von
Excel zuückgreifen auch in der Vergangenheit durchaus
Codekoompatibilität bestand und die Makros trotzdem nicht ausgeführt
werden konnten. Beispielsweise ist ein Makro wie:

Sub test()
Msgbox "Hello World"
End Sub

in VBA und StarBasic völlig Code-identisch, konnte jedoch trotzdem
früher in OOo nicht ausgeführt werden.

Insgesamt ist die Unterstützung von VBA in OOo natürlich noch ziemlich
in der Entwicklung begriffen, für gerade benutzerdefinierte Funktionen
tun sich jedoch schon heute interessante Perspektiven auf und es besteht
nun die prinzipielle Möglichkeit VBA überhaupt zu nutzen, was früher ja
garnicht ging.
Im Übrigen wird in StarBasic nun quasi zu Teilen VBA unterstützt, da
OOo-Calc VBA ansich unterstützt auch in StarBasic-Makros somit z.T.
VBA-Konstrukte akzeptiert werden, z.B.:

Option VBASupport 1

Sub Main
Range("C1").Value = 123
End Sub





(*)
der Unterschied (den ich hier mit den zwei selbst vergebenen Attributen
versuche zu verdeutlichen) ist dadurch kenntlich das in den Versionen
(ich glaube ab OOo 2.4 sowie in ggf. auch älteren Versionen anderer
Distributionen) unter Extras-Optionen kein separater Eintrag zur
Aktivierung/Deaktivierung der Ausführung von VBA-Code in Calc
existierte.
In diesen frühen Versionen galt also die Einstellung die das Laden von
Code entschied auch für dessen Ausführung, war Laden aktiviert erfolgte
auch eine Ausführung des Codes, sofern das die Version bereits
unterstützte.
Seit 3.0 gibt es nun eine separate Option für das Laden von VBA und das
Ausführen von VBA in Calc.



Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org

Antwort per Email an