Hallo zusammen, ich habe ein paar Befehle für LibreOffice / OpenOffice gebastelt. Die Makro-Befehle habe ich aus dem Material von Andrew Pitonyak entnommen (leider kann ich den Link hier nicht speichern). Falls Interesse an weiteren Befehlen besteht, könnte ich noch welche hochladen. Ich würde mich auch über einen Austausch zur Weiterentwicklung freuen. vlg mika
Hier ist ein Beispiel: Der Cursor wird vor oder nach dem gesuchten Wort platziert. Dazu starte ich über ein Makro den LibreOffice-internen Suchbefehl. Das gesuchte Wort wird über <dictation> eingesetzt. Achtung: Das gesuchte Wort muss hinter dem aktuellen Cursor folgen. Für die Rückwärts-Suche braucht man ein zweites Makro, wo die Suchrichtung geändert wird.
Der Name des Befehls lautet: Cursor <vornach> <dictation> (also zB: "Cursor hinter Blumenstrauß") Erläuterung: <vornach> ist ein Listenfeld mit den Elementen "vor" und "nach" und "hinter"
Sub Main 'Hier ist der Einstieg, damit LibreOffice überhaupt anspricht Set objServiceManager= CreateObject("com.sun.star.ServiceManager") 'Create the Desktop Set objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") Dim args() Set oDoc= objDesktop.CurrentComponent 'Create a text object Set oText= oDoc.GetText 'Create a cursor object Set CC = odoc.CurrentController Set vC = CC.getViewCursor() Set C = otext.CreateTextCursorByRange (vC)
'Hier wird die Suche gestartet und der Suchbegriff eingesetzt mit "ListVar2"
Set ParaSuchen = oDoc.createSearchDescriptor With ParaSuchen .SearchString = ListVar2 .SearchStyles = False .SearchRegularExpression = False End With Set oFound = oDoc.findNext (vC, ParaSuchen)
'Soll der Cursor vor oder nach dem gesuchten Wort platziert werden Select Case ListVar1 Case "vor" Set C = oText.CreateTextCursorByRange(oFound.getStart()) Case "nach", "hinter" Set C = oText.CreateTextCursorByRange(oFound.getEnd()) End Select
'Nun wird das Ergebnis sichtbar gemacht CC.Select (C)