Seite 1 von 1

suchen ersetzen von ganzen werten/wörtern

Verfasst: Mo, 16.01.2006 08:25
von kannenklaus
hallo zusammen,

ich arbeite gerade an einem makro das multiples suchen und ersetzen ermögliche soll. dabei habe ich bisher ein problem nicht knakcen können. der replacedescirptor ersetzt in dem beispiel die zahl 1, wenn sie einmal vorkommt. er soll sie aber nur ersetzen, wenn sie vollständig vorkommt. in der api habe ich dafür

SearchAlgorithms mit ABSOLUTE

der dispatcher zeichnet hierzu folgenden code auf:

Code: Alles auswählen

args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 1
gefunden. bisher konnte ich diese anweisung nicht in das makro integrieren. hat jemand eine idee?

Code: Alles auswählen

Sub SuErMultiple
	
	Dim oDoc as Object
	Dim oBereich as Object
	Dim oSuche1 as Object
	Dim oSuche2 as Object
	Dim oSuche3 as Object
	Dim oSuche4 as Object
	Dim oSuche5 as Object
	Dim oSheet as Object
	oDoc = ThisComponent
  	oSheet =  oDoc.CurrentController.ActiveSheet
	oBereich = oSheet.getCellRangeByName("C1:C13")
	oSuche1 = oBereich.createReplaceDescriptor
	oSuche2 = oBereich.createReplaceDescriptor	
	oSuche3 = oBereich.createReplaceDescriptor
	oSuche4 = oBereich.createReplaceDescriptor
	oSuche5 = oBereich.createReplaceDescriptor

'--1. Suchen/Ersetzen Ausdruck
		.oBereich.algorithmType = ABSOLUTE
		.setSearchString("1")
		.setReplaceString("5")
		.SearchCaseSensitive = True 'unterscheidet Groß- und Kleinschreibung
		'.SearchRegularExpression = True  'sucht nach regulären Ausdrücken
			end with
		oBereich.replaceAll(oSuche1)	
freue mich auf eine antwort

klaus

Verfasst: Mo, 16.01.2006 08:52
von Toxitom
Hey Klaus,

nur mal ein ganz kurzer "Schnellschuss":
  • .oBereich.algorithmType = ABSOLUTE
Das hier ist mit Sicherheit falsch! Schon das "with oBereich" dürfte nicht richtig sein, spätestens aber die Zuweisung von "ABSOLUTE" kann so nicht funktionieren. Wenn du eine vordefinierte Konstante meinst (und das meinst du sicher), dann musst du sie auch komplett benennen - eben so wie es in der API steht. Meist: com.sun.star......ABSOLUTE (Also, die Punkte musst du entsprechend selsbt ausfüllen.

Viele Grüße
Thomas

Verfasst: Mo, 16.01.2006 10:13
von kannenklaus
hallo thomas
Meist: com.sun.star......ABSOLUTE
der c.s.s service läuft nicht richtig. ich versuche ihn gemäß api wie folgt aufzurufen:

Code: Alles auswählen

'--1. Suchen/Ersetzen Ausdruck
	com.sun.star.util.SearchAlgorithms.ABSOLUTE


	with oSuche1
		.setSearchString("1")
		.setReplaceString("5")
		.SearchCaseSensitive = True 'unterscheidet Groß- und Kleinschreibung
		'.SearchRegularExpression = True  'sucht nach regulären Ausdrücken
			end with
		oBereich.replaceAll(oSuche1)
hast du eine idee. freue mich auf eine antwort.

beste grüße

klaus

Verfasst: Mo, 16.01.2006 12:49
von Toxitom
Hey Klaus,

nun, ehrlich gesagt, ich weiss gar nicht so genau, was du eigentlich willst. Du möchtest eine Bereich durchsuceh und eine Zahl ersetzen, wenn sie "alleine" in der Zelle vorkommt?
Also, ich habe deine Code geprüft - das funktioniert doch?

Code: Alles auswählen

Sub SuErMultiple
   Dim oDoc as Object
   Dim oBereich as Object
   Dim oSuche1 as Object
   Dim oSheet as Object
   oDoc = ThisComponent
     oSheet =  oDoc.CurrentController.ActiveSheet
   oBereich = oSheet.getCellRangeByName("a1:a27")
   oSuche1 = oBereich.createReplaceDescriptor()
  
'--1. Suchen/Ersetzen Ausdruck
   with oSuche1
   '   .oBereich.algorithmType = ABSOLUTE
      .setSearchString("1")
      .setReplaceString("5")
      .SearchCaseSensitive = True 'unterscheidet Groß- und Kleinschreibung
      .SearchRegularExpression = True  'sucht nach regulären Ausdrücken
      .SearchWords = true 'Inhalt muss exakt dem Serchstring entsprechen
    end with
    oBereich.replaceAll(oSuche1)   
end sub
Setzt du "SearchWords" auf "False" (vorgabe), so wird Zeichen für Zeichen überprüft und ersetzt. Auf True nur komplette Wörter.

Du brauchst dafpür weder den "algorithmType" noch "SearchRegularExpression" bei so einfachen Ersetzungen.

Oder verstehe ich irgendetwas falsch?

Gruss
Thomas

Verfasst: Mo, 16.01.2006 14:21
von kannenklaus
hallo thomas,

wie immer ein danke an dich. dieser der zitierte code-eintrag hat gefehlt. nun klappt alles.javascript:emoticon(':lol:')
.SearchWords = true 'Inhalt muss exakt dem Serchstring
danke

beste grüße


klaus