Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende - BUG ?
Am 12.03.24 um 22:53 schrieb Gerhard Weydt: ... Das ist also nur eine eingeschränkte Lösung für Guidos Fragestellung; vielleicht genügt es ihm ja. Ja, dem genügt es vollkommen, auch weil er nur mit Writer arbeitet und dieses Makro nur auf Dateien losgelassen wird, die nur Unicode-Zeichen und keine Formatierungsinformationen enthalten. Viele Grüße Guido -- 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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende - BUG ?
Hallo Gerhard, ich danke Dir für Deine Überlegungen. Dass alles, was nicht Text ist, »verschwindet« - ist nachvollziehbar, da »VC.String« selbsterklärend ja sagt, dass hier Zeichenketten geliefert werden. Darauf hinzuweisen hatte ich im »Eifer des Gefechts« bezüglich CR/LF vergessen. Davon ausgehend, dass »WRITER [Ansicht] [Formatierungszeichen]« wirklich alle Formatierungszeichen anzeigt, kann es direkt eigentlich nichts mit den verschiedenen Zeilenwechseln der verschiedenen Betriebssysteme zu tun haben. So lange ich nur in WRITER agiere und nichts von außen nach WRITER importiere, kommen in WRITER im Wesentlichen nur CR / Carriage Return ( ¶ ) und HT / Horizontal Tab vor, nicht aber LF / Line Feed - trotz Windows-Betriebssystem - so meine bisherigen Erfahrungen. LFs habe ich bis jetzt immer nur dann in WRITER rein bekommen, wenn ich z.B. vom WEB etwas kopiert und in WRITER eingefügt habe (Beispiel: https://www.zdf.de/serien/reset-wie-weit-willst-du-gehen/konkurrenz-sechsteilige-drama-serie-100.html - Der Text zwischen »Die Handlung« und »Darsteller« ). WRITER behandelt dann diese importierten LFs bezüglich der Darstellung wie CRs. Von daher bleibt es für mich weiterhin rätselhaft/unerklärlich, dass »VC.String« zusätzliche LFs »herbei zaubert«. Grüße Hans-Werner ;-)) -- Originalnachricht -- Von "Gerhard Weydt" An users@de.libreoffice.org Datum 12.03.2024 22:53:43 Betreff Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende - BUG ? Hallo Hans-Werner, laut Thomas Krumbeins Makro-Buch ist CR der Zeilenwechsel für Mac, LF der für Linux und CR + LF der für Windows. Das erklärt vielleicht das von dir beschriebene Phänomen, ich weiß aber auch nicht wie. Ich habe dein Makro Guido mal ausprobiert für ein Dokument, das eine Tabelle und ein Bild enthielt: die Tabelle wurde zu einfachen Absätzen, das Bild verschwand; so hatte ich es auch ähnlich vermutet. Das ist also nur eine eingeschränkte Lösung für Guidos Fragestellung; vielleicht genügt es ihm ja. Viele Grüße Gerhard Am 12.03.2024 um 19:10 schrieb OoOHWHOoO: Hallo Guido, so wie's ausschaut, hängt »VC.String« an vorhandene CRs = Chr(13) automatisch ein LF = Chr(10) an. Das habe ich mit diesem BasicMakro (offensichtlich) herausgefunden: Sub VCString '--- WRITER-Datei via LibreOffice 'ABC¶ 'DEF¶ 'GHI¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '--- WRITER-Datei via LibreOffice ' '--- E:\TMP\VCString.txt via Notepad++ 'EEFcrlf 'GHIcrlf 'crlf 'crlf 'ABCcrlf 'DEFcrlf 'GHIcrlf 'crlf 'ABCcrlf 'DEFcrlf 'GHIcrlf '--- E:\TMP\VCString.txt via Notepad++ Dim VC as Object ' View Cursor VC = ThisComponent.GetCurrentController.ViewCursor VC.gotoEnd(True) Dim PathFile as String Dim Number as Integer PathFile = "E:\TMP\VCString.txt" ' Anpassen ! Number = Freefile Open PathFile For Output As #Number Print #Number,VC.String Close #Number End Sub Hier das eigentliche BasicMakro für Deine Zwecke, bei dem erst mal »Chr(13) & Chr(10)« durch »Chr(13)« ersetzt wird vor der eigentlichen vom Benutzer optionierten Suche/Ersetzung: Sub Guido '--- WRITER-Datei 'ABC 'DEF 'GHI ' 'ABC 'DEF 'GHI ' ' 'ABC 'DEF 'GHI ' 'ABC 'DEF 'GHI '--- WRITER-Datei Dim VC as Object ' View Cursor Dim SS as String ' Search String Dim RS as String ' Replace String SS = "E" ' Search String RS = "●" ' Replace String VC = ThisComponent.GetCurrentController.ViewCursor VC.gotoEnd(True) VC.String = Replace(Replace(VC.String,Chr(13) & Chr(10),Chr(13)),SS,RS) End sub Für Hinweise auf Denkfehler oder falsche Annahmen meinerseits wäre ich dankbar. Falls meine Recherche stimmt, wäre es dann als BUG anzusehen, dass in »VC.String« an CRs jeweils ein LF anhängt wird ? Grüße Hans-Werner ;-)) -- 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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende - BUG ?
Hallo Hans-Werner, laut Thomas Krumbeins Makro-Buch ist CR der Zeilenwechsel für Mac, LF der für Linux und CR + LF der für Windows. Das erklärt vielleicht das von dir beschriebene Phänomen, ich weiß aber auch nicht wie. Ich habe dein Makro Guido mal ausprobiert für ein Dokument, das eine Tabelle und ein Bild enthielt: die Tabelle wurde zu einfachen Absätzen, das Bild verschwand; so hatte ich es auch ähnlich vermutet. Das ist also nur eine eingeschränkte Lösung für Guidos Fragestellung; vielleicht genügt es ihm ja. Viele Grüße Gerhard Am 12.03.2024 um 19:10 schrieb OoOHWHOoO: Hallo Guido, so wie's ausschaut, hängt »VC.String« an vorhandene CRs = Chr(13) automatisch ein LF = Chr(10) an. Das habe ich mit diesem BasicMakro (offensichtlich) herausgefunden: Sub VCString '--- WRITER-Datei via LibreOffice 'ABC¶ 'DEF¶ 'GHI¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '--- WRITER-Datei via LibreOffice ' '--- E:\TMP\VCString.txt via Notepad++ 'EEFcrlf 'GHIcrlf 'crlf 'crlf 'ABCcrlf 'DEFcrlf 'GHIcrlf 'crlf 'ABCcrlf 'DEFcrlf 'GHIcrlf '--- E:\TMP\VCString.txt via Notepad++ Dim VC as Object ' View Cursor VC = ThisComponent.GetCurrentController.ViewCursor VC.gotoEnd(True) Dim PathFile as String Dim Number as Integer PathFile = "E:\TMP\VCString.txt" ' Anpassen ! Number = Freefile Open PathFile For Output As #Number Print #Number,VC.String Close #Number End Sub Hier das eigentliche BasicMakro für Deine Zwecke, bei dem erst mal »Chr(13) & Chr(10)« durch »Chr(13)« ersetzt wird vor der eigentlichen vom Benutzer optionierten Suche/Ersetzung: Sub Guido '--- WRITER-Datei 'ABC 'DEF 'GHI ' 'ABC 'DEF 'GHI ' ' 'ABC 'DEF 'GHI ' 'ABC 'DEF 'GHI '--- WRITER-Datei Dim VC as Object ' View Cursor Dim SS as String ' Search String Dim RS as String ' Replace String SS = "E" ' Search String RS = "●" ' Replace String VC = ThisComponent.GetCurrentController.ViewCursor VC.gotoEnd(True) VC.String = Replace(Replace(VC.String,Chr(13) & Chr(10),Chr(13)),SS,RS) End sub Für Hinweise auf Denkfehler oder falsche Annahmen meinerseits wäre ich dankbar. Falls meine Recherche stimmt, wäre es dann als BUG anzusehen, dass in »VC.String« an CRs jeweils ein LF anhängt wird ? Grüße Hans-Werner ;-)) -- 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
[de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende - BUG ?
Hallo Guido, so wie's ausschaut, hängt »VC.String« an vorhandene CRs = Chr(13) automatisch ein LF = Chr(10) an. Das habe ich mit diesem BasicMakro (offensichtlich) herausgefunden: Sub VCString '--- WRITER-Datei via LibreOffice 'ABC¶ 'DEF¶ 'GHI¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '¶ 'ABC¶ 'DEF¶ 'GHI¶ '--- WRITER-Datei via LibreOffice ' '--- E:\TMP\VCString.txt via Notepad++ 'EEFcrlf 'GHIcrlf 'crlf 'crlf 'ABCcrlf 'DEFcrlf 'GHIcrlf 'crlf 'ABCcrlf 'DEFcrlf 'GHIcrlf '--- E:\TMP\VCString.txt via Notepad++ Dim VC as Object ' View Cursor VC = ThisComponent.GetCurrentController.ViewCursor VC.gotoEnd(True) Dim PathFile as String Dim Number as Integer PathFile = "E:\TMP\VCString.txt" ' Anpassen ! Number = Freefile Open PathFile For Output As #Number Print #Number,VC.String Close #Number End Sub Hier das eigentliche BasicMakro für Deine Zwecke, bei dem erst mal »Chr(13) & Chr(10)« durch »Chr(13)« ersetzt wird vor der eigentlichen vom Benutzer optionierten Suche/Ersetzung: Sub Guido '--- WRITER-Datei 'ABC 'DEF 'GHI ' 'ABC 'DEF 'GHI ' ' 'ABC 'DEF 'GHI ' 'ABC 'DEF 'GHI '--- WRITER-Datei Dim VC as Object ' View Cursor Dim SS as String ' Search String Dim RS as String ' Replace String SS = "E" ' Search String RS = "●" ' Replace String VC = ThisComponent.GetCurrentController.ViewCursor VC.gotoEnd(True) VC.String = Replace(Replace(VC.String,Chr(13) & Chr(10),Chr(13)),SS,RS) End sub Für Hinweise auf Denkfehler oder falsche Annahmen meinerseits wäre ich dankbar. Falls meine Recherche stimmt, wäre es dann als BUG anzusehen, dass in »VC.String« an CRs jeweils ein LF anhängt wird ? Grüße Hans-Werner ;-)) -- 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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
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" 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
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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
Hallo Werner, vielen Dank! Eine Lösung habe ich noch nicht gefunden, aber viel aus dem ich lernen kann! Beste Grüße Guido Am 11.03.24 um 11:44 schrieb OoOHWHOoO: Hallo Guido, schau mal in »BASIC-Makros für OO und LO - OOME 4.0« ab »14.6 Textauswahl«. Nicht unbedingt eine »leichte Kost«, aber da geht es um den Bereich zwischen einem »linken Cursor« und einem »rechten Cursor« - und natürlich auch um »Suchen« und »Ersetzen«: »14.7.1 Eine Textauswahl oder einen bestimmten Range durchsuchen« Eigene Erfahrungswerte habe ich dazu leider nicht, da ich bisher nur mit »14.7.3 Erweitertes Suchen und Ersetzen« gearbeitet habe. Mit »14.7.3« kann man eine halbautomatische Lösung realisieren, da man für das Suchen auch ein Farb-Attribut angeben kann. Mit dem Beispiel-Makro funktioniert das so, dass man den Textbereich, in dem gesucht und ersetzt werden soll, einfach manuell rot einfärben muss. Anschließend das Makro über die Schaltfläche starten und alle roten »Hallo« werden durch »ollaH« ersetzt. Schau mal hier: https://magentacloud.de/s/KYLsjXTzY62DCqF Ordner: »Guido« »Guido.odt« - Datei zum direkten Testen ! »Guido.bas« - BasicMakro-Code Vielleicht hilft Dir das alles ja irgendwie weiter eine für Dich passende Lösung zu realisieren, Grüße Hans-Werner ;-)) -- Originalnachricht -- Von "Guido Dischinger" An users@de.libreoffice.org Datum 11.03.2024 08:47:35 Betreff [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende Hallo zusammen! Mit einem Makro möchte ausschließlich im Text von der aktuellen Cursorposition bis zum Dateiende suchen und ersetzen. Per Makro kann ich zwar den Text mithilfe eines Textcursors bis zum Dateiende "markieren", aber Suchen und Ersetzen kann ich (bisher) nur im gesamten Dokument. Wie kann ich mit einem Makro nur bis zum Textende suchen und ersetzen und den Text vor der aktuellen Cursorposition unverändert lassen? Beste Grüße Guido Dischinger -- 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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
Hallo Werner, vielen Dank! Allerdings hilft es mir nicht ganz weiter. Ich habe folgendes Makro geschrieben und gedacht, dass ".searchAll = False" verhindert, dass der gesamte Text bearbeitet wird: --- schnipp 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 ThisComponent.ReplaceAll(repl) end sub --- schnapp Das Ding ersetzt im gesamten Text "XXX" durch "YYY", nicht nur ab der aktuellen Cursorposition? Warum? Wie sieht ein Makro aus, das nur ab der Cursorposition ersetzt? Guido Am 11.03.24 um 13:28 schrieb Werner Tietz: Hallo ### doc = ThisComponent viewCursor = doc.CurrentController.ViewCursor viewCursor.gotoEnd( True ) 'selektieren bis Dokument_Ende repl = doc.createReplaceDescriptor() repl.searchAll = False …… # Am 11.03.24 um 08:47 schrieb Guido Dischinger: Hallo zusammen! Mit einem Makro möchte ausschließlich im Text von der aktuellen Cursorposition bis zum Dateiende suchen und ersetzen. Per Makro kann ich zwar den Text mithilfe eines Textcursors bis zum Dateiende "markieren", aber Suchen und Ersetzen kann ich (bisher) nur im gesamten Dokument. Wie kann ich mit einem Makro nur bis zum Textende suchen und ersetzen und den Text vor der aktuellen Cursorposition unverändert lassen? Beste Grüße Guido Dischinger -- 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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
Hallo ### doc = ThisComponent viewCursor = doc.CurrentController.ViewCursor viewCursor.gotoEnd( True ) 'selektieren bis Dokument_Ende repl = doc.createReplaceDescriptor() repl.searchAll = False …… # Am 11.03.24 um 08:47 schrieb Guido Dischinger: Hallo zusammen! Mit einem Makro möchte ausschließlich im Text von der aktuellen Cursorposition bis zum Dateiende suchen und ersetzen. Per Makro kann ich zwar den Text mithilfe eines Textcursors bis zum Dateiende "markieren", aber Suchen und Ersetzen kann ich (bisher) nur im gesamten Dokument. Wie kann ich mit einem Makro nur bis zum Textende suchen und ersetzen und den Text vor der aktuellen Cursorposition unverändert lassen? Beste Grüße Guido Dischinger -- 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
Re: [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
Hallo Guido, schau mal in »BASIC-Makros für OO und LO - OOME 4.0« ab »14.6 Textauswahl«. Nicht unbedingt eine »leichte Kost«, aber da geht es um den Bereich zwischen einem »linken Cursor« und einem »rechten Cursor« - und natürlich auch um »Suchen« und »Ersetzen«: »14.7.1 Eine Textauswahl oder einen bestimmten Range durchsuchen« Eigene Erfahrungswerte habe ich dazu leider nicht, da ich bisher nur mit »14.7.3 Erweitertes Suchen und Ersetzen« gearbeitet habe. Mit »14.7.3« kann man eine halbautomatische Lösung realisieren, da man für das Suchen auch ein Farb-Attribut angeben kann. Mit dem Beispiel-Makro funktioniert das so, dass man den Textbereich, in dem gesucht und ersetzt werden soll, einfach manuell rot einfärben muss. Anschließend das Makro über die Schaltfläche starten und alle roten »Hallo« werden durch »ollaH« ersetzt. Schau mal hier: https://magentacloud.de/s/KYLsjXTzY62DCqF Ordner: »Guido« »Guido.odt« - Datei zum direkten Testen ! »Guido.bas« - BasicMakro-Code Vielleicht hilft Dir das alles ja irgendwie weiter eine für Dich passende Lösung zu realisieren, Grüße Hans-Werner ;-)) -- Originalnachricht -- Von "Guido Dischinger" An users@de.libreoffice.org Datum 11.03.2024 08:47:35 Betreff [de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende Hallo zusammen! Mit einem Makro möchte ausschließlich im Text von der aktuellen Cursorposition bis zum Dateiende suchen und ersetzen. Per Makro kann ich zwar den Text mithilfe eines Textcursors bis zum Dateiende "markieren", aber Suchen und Ersetzen kann ich (bisher) nur im gesamten Dokument. Wie kann ich mit einem Makro nur bis zum Textende suchen und ersetzen und den Text vor der aktuellen Cursorposition unverändert lassen? Beste Grüße Guido Dischinger -- 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
[de-users] Basic-Makro: Im Writer suchen und ersetzen nur bis zum Dateiende
Hallo zusammen! Mit einem Makro möchte ausschließlich im Text von der aktuellen Cursorposition bis zum Dateiende suchen und ersetzen. Per Makro kann ich zwar den Text mithilfe eines Textcursors bis zum Dateiende "markieren", aber Suchen und Ersetzen kann ich (bisher) nur im gesamten Dokument. Wie kann ich mit einem Makro nur bis zum Textende suchen und ersetzen und den Text vor der aktuellen Cursorposition unverändert lassen? Beste Grüße Guido Dischinger -- 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