Date: prev next · Thread: first prev next last
2024 Archives by date, by thread · List index


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" <dis@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+unsubscribe@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+unsubscribe@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.