3 kleine Fragen: Makro beenden + Makro kopieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: 3 kleine Fragen: Makro beenden + Makro kopieren

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

von komma4 » Sa, 19.02.2011 11:14

Re: 3 kleine Fragen: Makro beenden + Makro kopieren

von DPunch » Fr, 18.02.2011 17:27

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

von DPunch » Do, 17.02.2011 08:32

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

von komma4 » Di, 15.02.2011 15:11

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

von gogo » Di, 15.02.2011 12:08

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

Nach oben