3 kleine Fragen: Makro beenden + Makro kopieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Beitrag von gogo »

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
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Benutzeravatar
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

Beitrag von komma4 »

1. Setze einen Schalter (wenn überhaupt nach dem Aufruf der 2. SUB noch Code kommt)

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
Das Nutzen von Sprunganweisungen gilt als "unsaubere" Programmierung.



2. Lokale (dokumentenspezifische) Bibliotheken prüfst Du mit

Code: Alles auswählen

If ThisComponent.BasicLibraries.hasByName( "myLib" ) Then
   myLib = ThisComponent.BasicLibraries.getByName( "myLib" ) 
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?
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)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Beitrag von DPunch »

Aloha

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)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Beitrag von DPunch »

Aloha
WoOolf hat geschrieben:Wo kann man denn sowas nachschlagen, wenn man es nicht weiss?
Gibt es evtl. eine gute Quelle?
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.
Benutzeravatar
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

Beitrag von komma4 »

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)
Antworten