Hallo,
zunächst mal: ich bin absolute beginner.
Ich muss polnischen Text (jeweils 2-3 Wörter) in URLs umwandeln. Da URLs keine Sonderzeichen mögen, das Polnische aber geradezu davon wimmelt, möchte ich dieses Ersetzen automatisieren. Versucht habe ich es mit folgendem Makro:
----------------------------------------------------------------
'Attribute VB_Name = "modUmlauteErsetzen"
Sub polnischeSonderzeichen()
'Erweitern Sie das folgende Array, wenn
'weitere Buchstaben ersetzt werden sollen
Dim sSuchtext(18) As String
Dim sErsetzen(18) As String
'
sSuchtext(1) = "Ą"
sErsetzen(1) = "A"
sSuchtext(2) = "ą"
sErsetzen(2) = "a"
sSuchtext(3) = "Ć"
sErsetzen(3) = "C"
sSuchtext(4) = "ć"
sErsetzen(4) = "c"
sSuchtext(5) = "Ę"
sErsetzen(5) = "E"
sSuchtext(6) = "ę"
sErsetzen(6) = "e"
sSuchtext(7) = "Ł"
sErsetzen(7) = "L"
sSuchtext(8) = "ł"
sErsetzen(8) = "l"
sSuchtext(9) = "Ń"
sErsetzen(9) = "N"
sSuchtext(10) = "ń"
sErsetzen(10) = "n"
sSuchtext(11) = "Ó"
sErsetzen(11) = "O"
sSuchtext(12) = "ó"
sErsetzen(12) = "o"
sSuchtext(13) = "Ś"
sErsetzen(13) = "S"
sSuchtext(14) = "ś"
sErsetzen(14) = "s"
sSuchtext(15) = "Ź"
sErsetzen(15) = "Z"
sSuchtext(16) = "ź"
sErsetzen(16) = "z"
sSuchtext(17) = "Ż"
sErsetzen(17) = "Z"
sSuchtext(18) = "ż"
sErsetzen(18) = "z"
'
For i = 1 To 18
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'
With Selection.Find
.Text = sSuchtext(i)
.Replacement.Text = sErsetzen(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
'
Selection.Find.Execute Replace:=wdReplaceAll
Next i
End Sub
------------------------------------------------------------------
Leider erscheint immer folgende Fehlermeldung: BASIC-Laufzeitfehler. Ojektvariable nicht belegt. Es bezieht sich auf die Zeile
Selection.Find.Clear.Formatting
Wenn ich diese Zeile auskommentiere, erscheint die selbe Fehlermeldung, die sich dann auf die nächste Zeile
Selection.Find.Replacement.Clear.Formatting
bezieht.
Vielelicht ist meine Herangehensweise total daneben und naiv? Kann mir jemand helfen?
Vielen Dank und schöne Grüße
SoHo22
polnische Sonderzeichen
Moderator: Moderatoren
Re: polnische Sonderzeichen
Hallo
Versuchs mal damit:
Das ist jetzt "nur" für drei Sonderzeichen, du schaffst das aber bestimmt selber anzupassen.
Karo
Versuchs mal damit:
Code: Alles auswählen
Sub sonderzeichenaustauschen
doc = thisComponent
repl = doc.createReplaceDescriptor()
repl.SearchAll = True
repl.SearchCaseSensitive = True
repl.SearchRegularExpression = False
repl.SearchStyles = False
repl.SearchWords = False
searchchars = array( "ä","ö","ü" ) ' hier musst du deine Sonderzeichen eintragen
replacechars = array( "a","o","u" ) 'und hier die Ersetzungen
for i = 0 to ubound( searchchars )
repl.SearchString = searchchars(i)
repl.ReplaceString = replacechars(i)
doc.replaceAll( repl )
next i
End Sub
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: polnische Sonderzeichen
Ja, das war es. Super! Es hat einwandfrei funktioniert. Jetzt kann ich die Sonderzeichen rausschmeißen und gute URLs herstellen.
Danke!
Danke!
Re: polnische Sonderzeichen
Hallo SoHo22,
noch etwas Grundsätzliches was Du dir für die Zukunft merken musst.
Damit deklarierst Du nicht 18 Array-Punkte, sondern 19. Die Zählung bei solchen Arrays fängt nämlich immer mit Null (0) an, und nicht wie Du denkst mit 1. Und folglich müsstest Du alles ändern.
Deklaration
definition
Schleife
Oder alternativ:
Deklaration
Definition bleibt
Schleife
Gruß
balu
noch etwas Grundsätzliches was Du dir für die Zukunft merken musst.
Code: Alles auswählen
Dim sSuchtext(18) As String
Dim sErsetzen(18) As String
Deklaration
Code: Alles auswählen
Dim sSuchtext(17) As String
Dim sErsetzen(17) As String
Code: Alles auswählen
sSuchtext(0) = "Ą"
sErsetzen(0) = "A"
[...]
sSuchtext(17) = "ż"
sErsetzen(17) = "z"
Code: Alles auswählen
For i = 0 To 17
[...]
Next i
Oder alternativ:
Deklaration
Code: Alles auswählen
Dim sSuchtext(1 to 18) As String
Dim sErsetzen(1 to 18) As String
Code: Alles auswählen
sSuchtext(1) = "Ą"
sErsetzen(1) = "A"
[...]
sSuchtext(18) = "ż"
sErsetzen(18) = "z"
Code: Alles auswählen
For i = 1 To 18
[...]
Next i
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
