Hallo,
ich versuche einen Code für ein Makro zu erstellen, der alle Textfelder (Textboxen) eines Word-Dokuments durchläuft und alle Kleinbuchstaben geben ein "x" und alle Großbuchstaben gegen ein "X" austauscht. Die Formatierung, sowie Satzzeichen etc. sollen dabei erhalten bleiben. Ich habe nun bereits folgenden Code:
Jedoch wird dabei jeweils nur das erste Zeichen umgewandelt und ich erhalte die Fehlermeldung, dass das ausgewählte Element nicht in der Sammlung erhalten sei. (An der Stelle If Selection.Characters(i) Like "*[A-Z,Ä,Ö,Ü,0-9,a-z,ß,ä,ö,ü]*" Then)
Beim zweiten Versuch:
wird das erste Wort umgewandelt, jedoch bekomme ich dann den selben Fehler. In diesem Fall an der Stelle count = Selection.Sentences(i).Words.count.
Kann mir jemand weiter helfen wieso ich stets diese Fehlermeldung bekomme?
Den Code habe ich bereits so ähnlich für den allgemeinen Text benutzt, dabei hat alles soweit funktioniert.
ich versuche einen Code für ein Makro zu erstellen, der alle Textfelder (Textboxen) eines Word-Dokuments durchläuft und alle Kleinbuchstaben geben ein "x" und alle Großbuchstaben gegen ein "X" austauscht. Die Formatierung, sowie Satzzeichen etc. sollen dabei erhalten bleiben. Ich habe nun bereits folgenden Code:
Code:
Sub textfelder()
Dim shp As Shape
Dim wort As String
Dim iAnswer As Integer
Dim i, l, m, count, zeichenzahl As Long
Dim satz, worte As Range
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
shp.Select
Selection.ShapeRange.TextFrame.TextRange.Select
count = Selection.Characters.count
For i = 1 To count Step 1
If Selection.Characters(i) Like "*[A-Z,Ä,Ö,Ü,0-9,a-z,ß,ä,ö,ü]*" Then
Select Case Selection.Characters(i)
Case " "
Selection.Characters(i) = " "
Case Else
If isUpperCase(Selection.Characters(i)) Then
Selection.Characters(i) = "X"
Else
Selection.Characters(i) = "x"
End If
End Select
End If
Next
End If
Next
End Sub
Jedoch wird dabei jeweils nur das erste Zeichen umgewandelt und ich erhalte die Fehlermeldung, dass das ausgewählte Element nicht in der Sammlung erhalten sei. (An der Stelle If Selection.Characters(i) Like "*[A-Z,Ä,Ö,Ü,0-9,a-z,ß,ä,ö,ü]*" Then)
Beim zweiten Versuch:
Code:
Sub textfelder()
Dim shp As Shape
Dim wort As String
Dim iAnswer As Integer
Dim i, l, m, count, Zeichenzahl As Long
Dim satz, worte As Range
i = 0
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
shp.Select
Selection.ShapeRange.TextFrame.TextRange.Select
Do
l = 0
i = i + 1
count = Selection.Sentences(i).Words.count
Set satz = Selection.Sentences(i)
Do
l = l + 1
Set worte = satz.Words(l)
If worte Like "*[A-Z,Ä,Ö,Ü,a-z,ä,ö,ü,ß,0-9]*" Then
Zeichenzahl = worte.End - worte.Start
For m = 1 To Zeichenzahl
Select Case Selection.Sentences(i).Characters(m)
Case " "
Selection.Sentences(i).Characters(m) = " "
Case Else
If isUpperCase(Selection.Sentences(i).Characters(m)) Then
Selection.Sentences(i).Characters(m) = "X"
Else
Selection.Sentences(i).Characters(m) = "x"
End If
End Select
Next
End If
Loop Until l = count
Loop Until Selection.Sentences(i).End = Selection.End
End If
Next
End Sub
wird das erste Wort umgewandelt, jedoch bekomme ich dann den selben Fehler. In diesem Fall an der Stelle count = Selection.Sentences(i).Words.count.
Kann mir jemand weiter helfen wieso ich stets diese Fehlermeldung bekomme?
Den Code habe ich bereits so ähnlich für den allgemeinen Text benutzt, dabei hat alles soweit funktioniert.