BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Makro suchen nach ß -> findet - leider auch - ss

Alles zur Programmierung im OpenOffice.org
Antworten
bra
Beiträge: 7
Registriert: So 22. Mai 2016, 19:06

Makro suchen nach ß -> findet - leider auch - ss

Beitrag von bra » Di 31. Aug 2021, 16:44

Hi zusammen,

ich habe ein Makro geschrieben, dass mir aus einer Calc-Tabelle (mit Terminen) eine ICS Datei macht!

Dabei suche ich nach Umlauten und wandele sie um, damit ich in der ICS Datei keine Probleme bekommen.

Ich benutze das Makro nur einmal im Jahr.

Bei dem aktuellen Umlauf ist mir aufgefallen, dass, wenn ich einen String mit einem SS zum Umwandel schicke, er immer denkt, dass er ein ß gefunden hat und damit aus "Kasse" im ersten umlauf "Kassse", im zweiten Umlauf "Kasssse" und so weiter wird. Fazit das Makro "hängt"

Das habe ich so noch nicht gehabt.

Kann mir jemand einen Tipp geben wie ich das Problem lösen kann?

Anbei der Codeschnipsel für die Umwandlung

Code: Alles auswählen

Function RemoveUmlaute(sDescription as String) as String
sDummy = ""

REM .........GELÖSCHTER BEREICH..............
 
   If CBool(Instr(sDescription, "ß")) Then
    sDummy=""
    Do
       ' alle Vorkommen des ß umwandeln!
       sDummy = Left(sDescription,Instr(sDescription,"ß")-1) + "ss" + Right(sDescription,len(sDescription) - Instr(sDescription,"ß"))
       sDescription = sDummy    
    Loop until not CBool(Instr(sDescription, "ß"))   
   endIf

 
Gruß Matthias

Windows: 10p Libreoffice 7.2.0.4

craig
Beiträge: 318
Registriert: Sa 14. Mai 2016, 12:36

Re: Makro suchen nach ß -> findet - leider auch - ss

Beitrag von craig » Di 31. Aug 2021, 22:11

Hallo Matthias,

teste mal dies:

Code: Alles auswählen

REM  *****  BASIC  *****

Sub xReplace
  Dim mDe(7) As String
  Dim mRep(7) As String
  Dim n As Long
  Dim oDoc As Object
  Dim oReplace As Object
  oDoc = ThisComponent
' mri oDoc 
	oSheet=oDoc.Sheets.getByName("Tabelle1")	
		
  oReplace = oSheet.createReplaceDescriptor
	
	' Array Suchstring
	mDe() = Array("Ä","ä","Ö","ö","Ü","ü","ß")
	' Array Ersetzungsstring
	mRep() = Array("Ae", "ae", "Oe","oe", "Ue", "ue","ss")
	
	' Array Untergrenze bis Obergrenze durchlaufen	
	For n = lbound(mDe()) To ubound(mDe())
  	' CaseSensitive = Unterscheidung zwischen Groß- und Kleinschreibung
  	oReplace.SearchCaseSensitive=true
  		oReplace.SearchString = mDe(n)
		    oReplace.ReplaceString = mRep(n)
    oSheet.replaceAll(oReplace)
  Next n
End Sub
Gruß

Craig

Nie die Sicherungskopie vergessen!

═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)

Antworten