Autor Beitrag
Kirk1701A
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 114
Erhaltene Danke: 3

Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
BeitragVerfasst: So 01.03.20 15:31 
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"):

ausblenden 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
Einloggen, um Attachments anzusehen!
_________________
"Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
Gunther Troost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18

Windows 10, 64 bit
Delphi 5
BeitragVerfasst: Mi 04.03.20 11:29 
Lieber Kirk,

ich benutze für die Vorlage auch Bookmarks (Textmarken), und dabei springe ich mit folgender Prozedur zur Textmarke:
ausblenden volle Höhe 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:
ausblenden 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 user profile iconTh69: Vollzitat entfernt.