NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

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: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von Devil » Do, 09.07.2015 08:14

Dann habe ich noch eine frage Karolus. Weisst du woher es kommt, dass ich hiermit zu zwar Strings ersetzen kann, welche normalen Text wie "Hallo" und "Tschüss", aber das ersetzen von Strings mit Sonderzeichen funktioniert nicht immer (z.b. "{<User>}" wird manchmal nicht ersetzt).

Edit: hat sich erledigt da ich den gesamten block ausgetauscht habe.

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von Karolus » Mi, 08.07.2015 16:48

Du hast da offensichtlich keinen regulären Ausdruck, daher kannst(solltest) du mit:

Code: Alles auswählen

Repl.SearchRegularExpression = False
arbeiten.

Karolus

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von Devil » Mi, 08.07.2015 14:14

Vermutlich liegt es daran dass es der Writer ist...
Also es ist der Code von Oben:

Code: Alles auswählen

sub Suchen_und_Ersetzen

Sheet = ThisComponent.Sheets(0)
Repl = Sheet.createReplaceDescriptor()
Repl.setSearchString("Hallo")
Repl.setReplaceString("Tschüss")
Repl.SearchWords = False
Repl.SearchCaseSensitive = True
Repl.SearchRegularExpression = True
Sheet.replaceAll( Repl)

end sub
Ich habe es jetzt mal ohne das sheets(0) gemacht und jetzt funktioniert es.
Hier wie es für den Writer funktioniert (bin bisher irgendwie noch nicht auf die Idee gekommen das es daran liegen könnte :lol: ):

Code: Alles auswählen

sub Suchen_und_Ersetzen

Sheet = ThisComponent
Repl = Sheet.createReplaceDescriptor()
Repl.setSearchString("Hallo")
Repl.setReplaceString("Tschüss")
Repl.SearchWords = False
Repl.SearchCaseSensitive = True
Repl.SearchRegularExpression = True
Sheet.replaceAll( Repl)

end sub
Vielen dank ihr habt mir viel viel weiter geholfen :D

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von balu » Mi, 08.07.2015 13:56

Hallo Devil,

ich kenne niemanden der dir auf grund deiner einzigen geposteten Codezeile helfen kann. Also zeig uns lieber deinen gesamten Code wo der Fehler auftaucht.
Handelt es sich denn auch um Calc?



Gruß
balu

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von Devil » Mi, 08.07.2015 13:07

Entschuldigung wenn ich etwas nevig rüber kommen sollte aber ich habe noch nie mit Basic gearbeitet und brauche es vermutlich auch nur dieses eine mal aber jetzt mosert er an, dass er in der Zeile

Code: Alles auswählen

Sheet = thisComponent.sheets(0) 
die Eigenschaft oder Methode "sheets" nicht gefunden hat.

das hatte ich auch schon bei einigen anderen versuchen wo das vorkam...

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von Karolus » Mi, 08.07.2015 12:33

Hallo
Ich hatte das damals nicht explizit getestet `replace` ist eine Basic-function, benutze einen anderen Namen, zB. `Repl` oder meinetwegen auch `myReplace`

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von Devil » Mi, 08.07.2015 10:09

Hallo Karolus,
Ich habe deinen Code zum suchen und ersetzen mal ausprobiert und mir meldet OOo bei dem Teil

Code: Alles auswählen

Replace.SetSearchString("Hallo")
den folgenden Fehler : "Symbol Replace bereits anders definiert."

was mache ich falsch bzw. was muss ich anders machen???

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer

von LidiaS » Fr, 29.08.2014 13:04

Hallo Karolus,

ah ... jetzt ... ja, verstehe. Wenn man es sieht ist es logisch. Aber auf die Idee wäre ich nicht gekommen.

Ganz herzlichen Dank für Deine Unterstützung.

Viele Grüße
Lidia

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer

von Karolus » Fr, 29.08.2014 12:14

Hallo
Alleine damit, das du den Bereich an den Namen `myRange` bindest, ist es ja nicht getan, du musst auch noch im restlichen Code `Sheet` gegen `myRange` tauschen.
das sind die beiden Zeilen

Code: Alles auswählen

Replace = Sheet.createReplaceDescriptor() →
Replace = myRange.createReplaceDescriptor() 

Code: Alles auswählen

Sheet.replaceAll( Replace)→
myRange.replaceAll( Replace) 

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer

von LidiaS » Fr, 29.08.2014 11:35

Hallo Karolus,

jetzt habe ich noch ein kleines Problem:

Ich dachte ich könnte mit

Code: Alles auswählen

myRange = mySheet.getCellRangeByName("H1:H100")
den Bereich, in dem gesucht und ersetzt wird, einschränken, aber dies wird komplett ignoriert (ging bei meiner Version schon nicht, habe ich erst jetzt gemerkt). Der Makro ersetzt in dem gesamten Dokument die "()". Dabei sind sie in einigen Spalten erwünscht und in einer anderen nicht. Wie schränke ich dies richtig ein? So wie ich es gedacht habe ist es ja anscheinend falsch ...

Wäre für nochmalige Hilfe dankbar.

Vielen Dank und Gruß
Lidia

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer

von LidiaS » Fr, 29.08.2014 08:34

Hallo Karolus,

ganz herzlichen Dank für Deine super schnelle Unterstützung. Code habe ich "verbaut" und ausprobiert. Sieht gut aus :D und funktioniert. Bin einen kleinen Wissens-Schritt weiter.

Viele Grüße
Lidia

Re: NewBe Frage: Suchen und Ersetzten - geht das auch kürzer

von Karolus » Do, 28.08.2014 21:37

Etwa so:

Code: Alles auswählen

sub Suchen_und_Ersetzen

Sheet = ThisComponent.Sheets(0)
Replace = Sheet.createReplaceDescriptor()
Replace.setSearchString(", Deutschland|Mitgliedsname |EUR |[()]")
Replace.setReplaceString("")
Replace.SearchWords = False
Replace.SearchCaseSensitive = True
Replace.SearchRegularExpression = True
Sheet.replaceAll( Replace)

end sub

NewBe Frage: Suchen und Ersetzten - geht das auch kürzer?

von LidiaS » Do, 28.08.2014 19:45

Hallo Allerseits,

ich bin ganz neu hier und habe mit OO0 Basic eben erst angefangen. Ich habe ein kleines, funktionierendes Makro zum Suchen und Ersetzen von Worten/Zeichen in Calc erstellt (Mit Hilfe von Herrn Dannenhöfer ;-). Nun meine Frage: Geht das auch kürzer (besser)? Ich habe mit "if then" herumprobiert. Aber ohne wirklichen Erfolg. Warum "if then"? Ich dachte mir das so: Weil der String fürs Ersetzen immer "" ist. Also leer oder nichts. Und da sich das wiederholt dachte ich man könnte dieses Makro sicherlich straffen. Habe es aber (noch) nicht hinbekommen. Könnt Ihr mir bitte auf die Sprünge helfen?

Nachfolgend mein bescheidener Code.

Vielen Dank und Gruß
Lidia

Code: Alles auswählen

sub Suchen_und_Ersetzen

REM Definiere Variablen
Dim oDocument
Dim mySheet 'Tabellenblatt, in dem das Ersetzen stattfindet.
Dim myRange 'Zellbereich in dem ersetzt wird
Dim myReplace 'Ersetzen-Deskriptor.
Dim replace

REM Suchen und Ersetzen
mySheet = ThisComponent.Sheets(0)
myRange = mySheet.getCellRangeByName("A1:L100")
myReplace(1) = mySheet.createReplaceDescriptor()
myReplace(1).setSearchString(", Deutschland")
myReplace(1).setReplaceString("")
myReplace(1).SearchWords = False
replace  = mySheet.replaceAll(myReplace(1))

myReplace(2) = mySheet.createReplaceDescriptor()
myReplace(2).setSearchString("Mitgliedsname ")
myReplace(2).setReplaceString("")
myReplace(2).SearchWords = False
replace  = mySheet.replaceAll(myReplace(2))

myReplace(3) = mySheet.createReplaceDescriptor()
myReplace(3).setSearchString("EUR ")
myReplace(3).setReplaceString("")
myReplace(3).SearchWords = False
replace  = mySheet.replaceAll(myReplace(3))

myRange = mySheet.getCellRangeByName("H1:H100")
myReplace(4) = mySheet.createReplaceDescriptor()
myReplace(4).setSearchString("(")
myReplace(4).setReplaceString("")
myReplace(4).SearchWords = False
replace  = mySheet.replaceAll(myReplace(4))

myReplace(5) = mySheet.createReplaceDescriptor()
myReplace(5).setSearchString(")")
myReplace(5).setReplaceString("")
myReplace(5).SearchWords = False
replace  = mySheet.replaceAll(myReplace(5))

end sub

Nach oben