Kirk1701A - So 01.03.20 14:31
Titel: VBA Bookmarks funktionieren nicht
Hallo meine Freunde,
ich bin momentan an einem privaten VBA-Projekt, um meinen Briefkopf zu automatisieren, da der von mehreren Personen benutzt wird. Im Bild ist die leere Briefvorlage abgebildet. Die roten Rahmen umrahmen jeweils ein Bookmark, das ich in VBA ansprechen möchte. Aber leider wird der Wert nicht geschrieben. Hier mein Code, mit dem ich die String-Werte einsetze (es sind Variablen vom Typ "String"):
Quelltext
1:
| ActiveDocument.Bookmarks("Handy").Range.InsertAfter = handy |
Was mache ich falsch? Das nächste Problem ist, dass sich das VBA-Fenster auch nicht schließt, obwohl der Code "Unload Me" ausgeschrieben ist.
Ich hoffe, ihr könnt mir helfen.
LLAP
Euer Kirk
Gunther Troost - Mi 04.03.20 10:29
Lieber Kirk,
ich benutze für die Vorlage auch Bookmarks (Textmarken), und dabei springe ich mit folgender Prozedur zur Textmarke:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| Public Const einfachUnterstrichen = wdUnderlineSingle Public Const mitAbsatz = True Public Const ohneAbsatz = False Public Const normal = 0 Public Const kursiv = 1 Public Const fett = 2 Public Const unterstrichen = 4 Public Const nichtUnterstrichen = wdUnderlineNone
Function GehezuTextmarke(ByVal Marke As String, Optional Expandiere = False, Optional GanzeMarke = False) As Boolean
on Error GoTo GTFehler: Selection.ExtendMode = Expandiere Selection.GoTo What:=wdGoToBookmark, Name:=Marke If Not (GanzeMarke) Then Selection.MoveLeft Unit:=wdCharacter, Count:=1 GehezuTextmarke = True Exit Function GTFehler: GehezuTextmarke = False End Function
Function Schreiben(Text As Variant, Optional ByVal Absatz As Boolean, Optional ByVal SchriftTyp As Integer = -1) As Boolean With Selection.Font If SchriftTyp <> -1 Then If SchriftTyp And fett Then .Bold = True If SchriftTyp And kursiv Then .Italic = True If SchriftTyp And unterstrichen Then .Underline = einfachUnterstrichen End If Selection.TypeText Text If SchriftTyp <> -1 Then .Bold = False .Italic = False .Underline = nichtUnterstrichen End If End With If Absatz Then Absaetze 1 End If Schreiben = True
End Function |
Der Aufruf erfolgt dann wie folgt:
Quelltext
1: 2: 3:
| if GeheZuTextMarke ("NameDerMarke", False, True) then Schreiben "Text für Marke" end if |
Das sollte ohne Probleme funktionieren. Du musst in der Vorlage nur die entsprechenden Bereiche als Textmarke definieren. Am Besten mit einem Leerzeichen im Dokument, das die Textmarke umfasst.
Moderiert von Th69: Vollzitat entfernt.