Makro aufzeichnen gescheitert - versuche es jetzt mit Basic

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: Makro aufzeichnen gescheitert - versuche es jetzt mit Basic

von Mihilist » Mi, 19.07.2006 13:19

.DBG_methods ist auch recht nützlich :)

von Jonny » Mi, 19.07.2006 11:44

probier mal:

Code: Alles auswählen

msgbox objektname.dbg_properties

von komma4 » Di, 18.07.2006 14:27

DocMcFly hat geschrieben:PS: Aber wo bekommen ich Infos her, welche Methoden und Variablen Objecte wie das Dokument haben?
Clemens,

steht alles in der API :-)

Ich empfehle zum Stöbern (auch hier) xray

von DocMcFly » Di, 18.07.2006 14:07

Vielen Dank ... Mittels Deiner Hilfe war das Skript in wenigen Minuten fertig und genau so wie ich es haben wollte:

Wort markieren -> Skript über Button anklicken -> Querverweis fertig! -> Clemens freut sich! :D

Hier ist für alle, die auch so einen kleinen Helfer brauchen können der Quelltext:

Code: Alles auswählen

sub AutoQuerverweis

dim document   as object
dim dispatcher as object

rem ----------------------------------------------------------------------
rem get access to the document

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDok = StarDesktop.getCurrentComponent()

' sichtbaren cursor
oViewCursor = oDok.getCurrentController().getViewCursor()

' textcursor an stelle des sichtbaren cursors
oCur = oViewCursor.getText().createTextCursorByRange(oViewCursor)

' wenn nur Einfügemarkierung
if oCur.IsCollapsed then
   ' Wort unter dem Cursor mit TC markieren
   if NOT oCur.isStartOfWord() then
      oCur.gotoStartofWord(FALSE)
   endif
      
   ' Wortanfang bis Ende markieren
   oCur.gotoEndofWord(TRUE)

   ' den Inhalt des TC
   sWort = oCur.getString
   
' Ausgewählter Text
else
   sWort = oCur.getString
end if

dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Type"
args3(0).Value = 12
args3(1).Name = "SubType"
args3(1).Value = 0
args3(2).Name = "Name"
args3(2).Value = "[" + sWort+ "]"
args3(3).Name = "Content"
args3(3).Value = ""
args3(4).Name = "Format"
args3(4).Value = 0
args3(5).Name = "Separator"
args3(5).Value = " "

dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args3())

end sub
Vielen Dank für die schnelle Hilfe...

Clemens

PS: Aber wo bekommen ich Infos her, welche Methoden und Variablen Objecte wie das Dokument haben?

von komma4 » Di, 18.07.2006 13:14

Beispiel (ohne irgendwelche Prüfungen) aus add2dic.sxw:

ein markiertes Wort wird übernommen. Ist keines markiert, so wird das Wort unter dem Cursor markiert.

Code: Alles auswählen

' sichtbares Dokument (es ist besser eines da) 
oDok = StarDesktop.getCurrentComponent()

' sichtbaren cursor
oViewCursor = oDok.getCurrentController().getViewCursor()

' textcursor an stelle des sichtbaren cursors
oCur = oViewCursor.getText().createTextCursorByRange(oViewCursor)

' wenn nur Einfügemarkierung
if oCur.IsCollapsed then
	' Wort unter dem Cursor mit TC markieren

	if NOT oCur.isStartOfWord() then
		oCur.gotoStartofWord(FALSE)
	endif
		
	' Wortanfang bis Ende markieren
	oCur.gotoEndofWord(TRUE)

	' den Inhalt des TC
	sWort = oCur.getString
	
' Ausgewählter Text
else
	sWort = oCur.getString
end if

Für das Setzen von Referenzen empfehle ich die Lektüre des Quellcodes von http://ooomacros.org/user.php#113812


Hilft das für's Erste?

Makro aufzeichnen gescheitert - versuche es jetzt mit Basic

von DocMcFly » Mo, 17.07.2006 17:57

Hallo,

ich wollte mir ein kleines MakroTool basteln, was folgendes macht:

1. markierten Text merken
2. neuen Querverweis anlegen hinter dem markierten Text
3. Querverweis soll so heißen: [ markierter Text ]

Ich dachte das wäre einfach. Der Makrorecorder bekommt das gar nicht hin... Also selbst ist der Tipper...

Aber mein erstes Problem ist schon Punkt 1: Wie bekomme ich den markierten Text in eine Variable?

Vom Makrorecorder habe ich folgenden Quelltext erhalten:

Code: Alles auswählen

sub AutoQuerverweis
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object

rem --------Von Mir:------------------------------------------------------
dim text$

rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


rem ---------Mein erstes OOo Basic-Programm:------------------------------
rem Hier müsste ich ansetzen...


text$ = document.getSelectedText() 

rem oder so ähnlich... Wie bekomme ich raus, melche Methoden im Document-Object stecken? 

end sub
Ich bin etwas verwöhnt, weil ich in JAVA entwickle und so in meiner IDE nur einen Punkt eingebe und sehe welche Funktionen (Methoden) zur Verfügung stehen... Basic ist halt echt lange her... (TurboBasic & QuickBasic)


Naja, jedenfalls danke fürs Lesen und Anworten und Helfen...

Clemens

Nach oben