Hallo Guido,

ich mal mal ein wenig bei http://www.dannenhoefer.de/faqstarbasic/index.html gestöbert und folgendes Makro gebastelt:

Sub Guido

' Zum Testen in WRITER-Datei: [Ansicht][Formatierungszeichen] √ setzen

Dim VC as Object
Dim SS as String
Dim RS as String

SS = "das suchen"
RS = "damit ersetzen"

VC = ThisComponent.GetCurrentController.ViewCursor
VC.gotoEnd(True)
MsgBox("Zwischen-Stopp zum Nachschauen in WRITER-Datei: markierter Text")
VC.String = Replace(VC.String,SS,RS)
MsgBox("Zwischen-Stopp zum Nachschauen in WRITER-Datei: zusätzliche LFs")
VC.String = Replace(VC.String,Chr(10),"")

End sub

Die Zeile

ViewCursor.String = Replace(ViewCursor.String,Chr(10),"")

wurde notwendig, weil nach dem Suchen/Ersetzen vor und nach den CR / Carriage Return / Wagenrücklauf / Chr(13) im Text zusätzlich ein LF / Line Feed / Zeilenvorschub / Chr(10) eingefügt wurde.

Kein Ahnung warum :-((

Vielleicht hat da ja jemand einen Hinweis und/oder Idee ...

in Texten scheinen LFs überhaupt nicht vorzukommen. Ich kenne sie nur aus BasicMakros, wenn man via »MsgBox« eine neue Zeile schreiben will:

MsgBox("Zeile 1" & Chr(10) & "Zeile 2")

Ansonsten tut das BasicMakro was es soll ... hoffe ich mal ;-))

Grüße
Hans-Werner ;-))



------ Originalnachricht ------
Von "Guido Dischinger" <d...@posteo.de>
An users@de.libreoffice.org
Datum 11.03.2024 21:18:06
Betreff Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende

Hallo, Werner,

danke - das funktioniert. Mein Problem ist gelöst.

Ehrlich gesagt, ich hatte gehofft, es geht ohne Aufzeichnen. Das Aufzeichnen führt zu 
ellenlangem Code. Ein "händisches" Makro ist kürzer und in der Regel besser 
verständlich. Aber ich muss ja nicht in Schönheit sterben...

Noch mal danke!

Guido



Am 11.03.24 um 20:24 schrieb Werner Tietz:
Hallo

Dann eben ⇒Makro aufzeichnen:

#######################

sub record_search_replace_selection()

dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:EndOfDocumentSel", "", 0, Array()
dim args2(21) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.SearchFiltered"
args2(4).Value = false
args2(5).Name = "SearchItem.Backward"
args2(5).Value = false
args2(6).Name = "SearchItem.Pattern"
args2(6).Value = false
args2(7).Name = "SearchItem.Content"
args2(7).Value = false
args2(8).Name = "SearchItem.AsianOptions"
args2(8).Value = false
args2(9).Name = "SearchItem.AlgorithmType"
args2(9).Value = 1
args2(10).Name = "SearchItem.SearchFlags"
args2(10).Value = 71680
args2(11).Name = "SearchItem.SearchString"
args2(11).Value = "xxx"
args2(12).Name = "SearchItem.ReplaceString"
args2(12).Value = "yyy"
args2(13).Name = "SearchItem.Locale"
args2(13).Value = 255
args2(14).Name = "SearchItem.ChangedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.DeletedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.InsertedChars"
args2(16).Value = 2
args2(17).Name = "SearchItem.TransliterateFlags"
args2(17).Value = 1280
args2(18).Name = "SearchItem.Command"
args2(18).Value = 3
args2(19).Name = "SearchItem.SearchFormatted"
args2(19).Value = false
args2(20).Name = "SearchItem.AlgorithmType2"
args2(20).Value = 2
args2(21).Name = "Quiet"
args2(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
end sub

########################

Am 11.03.24 um 15:08 schrieb Guido Dischinger:
Sub ersetzenTest

Dim oViewCursor as Object
Dim oErsetzen

oDoc = ThisComponent
oViewCursor = oDoc.CurrentController.ViewCursor
oViewCursor.gotoEnd( True ) 'selektieren bis Dokument_Ende

repl = oDoc.createReplaceDescriptor()
With repl
   .SearchString = "XXX"
   .ReplaceString = "YYY"
   .searchAll = False
End With
'warum nochmals »thisComponent« ???
ThisComponent.ReplaceAll(repl)

end sub


-- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an