Seite 1 von 1

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Verfasst: Di, 15.02.2011 12:08
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

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Verfasst: Di, 15.02.2011 15:11
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?

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Verfasst: Do, 17.02.2011 08:32
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)

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Verfasst: Fr, 18.02.2011 17:27
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.

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

Verfasst: Sa, 19.02.2011 11:14
von komma4