ad 1:
Der Befehl den Du brauchst heisst "exit sub" bzw "exit function".
"exit function" deswegn, weil Du ja beide Makros beenden willst, daher sollte die aufGErufene Sub keine Sub sondern eine Function sein. Den Rückgabewert der Function benutzt Du dann in der aufrufenden Sub um auch diese zu beenden.
ad 2:
Das Überprüfen selbst ist kein Problem. Ruf das Makro einfach per Modulname.Makroname auf.
ad 2 und 3:
Willst Du ein Virus programmieren?
g
3 kleine Fragen: Makro beenden + Makro kopieren
Moderator: Moderatoren
Re: 3 kleine Fragen: Makro beenden + Makro kopieren
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: 3 kleine Fragen: Makro beenden + Makro kopieren
1. Setze einen Schalter (wenn überhaupt nach dem Aufruf der 2. SUB noch Code kommt)
Das Nutzen von Sprunganweisungen gilt als "unsaubere" Programmierung.
2. Lokale (dokumentenspezifische) Bibliotheken prüfst Du mit
und holst sie mit getByName - falls vorhanden.
In diesen finden sich die Module - ebenfalls wieder mit hasByName zu prüfen, den Inhalt holst Du Dir als STRING mit getByName .
Dann kannst Du schauen, ob der STRING Dein Makrocode SUB myMakro enthält.
3. Zugriff auf OOo-Bibliotheken
Erfolgt wie in 2., unter Austausch von ThisComponent gegen GlobalScope.
Suche hier im Forum nach XRAY und installiere und benutze es, dann wird Dir vieles klarer.
XRAY selbst hat in seinen Bibliotheken Beispielcode zum Zugriff aus Basic-LIBs.
Hilft Dir das weiter?
Code: Alles auswählen
DIM iSchalter as INTEGER
SUB Main
iSchalter = 0
' mach was
' ...
call Unterprogramm
If iSchalter = = Then
' weitere Anweisungen
Else
End If
End Sub
Sub Unterprogramm
iSchalter = 1
End Sub
2. Lokale (dokumentenspezifische) Bibliotheken prüfst Du mit
Code: Alles auswählen
If ThisComponent.BasicLibraries.hasByName( "myLib" ) Then
myLib = ThisComponent.BasicLibraries.getByName( "myLib" )
In diesen finden sich die Module - ebenfalls wieder mit hasByName zu prüfen, den Inhalt holst Du Dir als STRING mit getByName .
Dann kannst Du schauen, ob der STRING Dein Makrocode SUB myMakro enthält.
3. Zugriff auf OOo-Bibliotheken
Erfolgt wie in 2., unter Austausch von ThisComponent gegen GlobalScope.
Suche hier im Forum nach XRAY und installiere und benutze es, dann wird Dir vieles klarer.
XRAY selbst hat in seinen Bibliotheken Beispielcode zum Zugriff aus Basic-LIBs.
Hilft Dir das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: 3 kleine Fragen: Makro beenden + Makro kopieren
Aloha
Dem Dokument das Ereignis per Makro zuweisen kannst Du folgendermassen:
Dem Dokument das Ereignis per Makro zuweisen kannst Du folgendermassen:
Code: Alles auswählen
oDoc = thisComponent
Dim aEventArgs(1) as new com.sun.star.beans.PropertyValue
aEventArgs(0).Name = "EventType"
aEventArgs(0).Value = "Script"
aEventArgs(1).Name = "Script"
aEventArgs(1).Value = "vnd.sun.star.script:Bibliotheksname.Modulname.Makroname?language=Basic&location=document"
oDoc.Events.replaceByName("OnLoad",aEventArgs)
Re: 3 kleine Fragen: Makro beenden + Makro kopieren
Aloha
Für sowas im speziellen wüsste ich keine gute Quelle, das meiste ergibt sich durch das Arbeiten mit xray, ansonsten liegt es irgendwo in den Foren oder in Dokumenten wie dem von Pitonyak.WoOolf hat geschrieben:Wo kann man denn sowas nachschlagen, wenn man es nicht weiss?
Gibt es evtl. eine gute Quelle?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: 3 kleine Fragen: Makro beenden + Makro kopieren
Dokumentation im Netz: http://api.openoffice.org/SDK/index.html
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)