Office: Mit Kontrollkästchen Text einfügen

Helfe beim Thema Mit Kontrollkästchen Text einfügen in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Lieber Gerhard! Zum wiederholten Mal ganz herzlichen Dank! Du bist wirklich eine große Unterstützung! lg Alex PS: Allerdings würde ich auf alle... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von Al3x05, 8. Januar 2023.

  1. Al3x05 User

    Mit Kontrollkästchen Text einfügen


    Lieber Gerhard!

    Zum wiederholten Mal ganz herzlichen Dank! Du bist wirklich eine große Unterstützung!

    lg Alex

    PS:
    Ja, das ergibt Sinn - sonst wird das Makro aus Beitrag #9 (unten) nicht wie gewollt funktionieren.
     
  2. Al3x05 User
    Lieber Gerhard!

    Ich würde nochmal deine Unterstützung brauchen. Ich hab folgenden Code erstellt, der unter Word 365 nicht zu funktionieren scheint. Kannst du mir sagen, wo der Fehler liegt?

    Code:
    Sub cmdExecute_Click()
        Dim rngTxt As Range
        Dim txtMark As String
        Dim objTemplate As Template
        Dim objBuildingBlock As BuildingBlock
        Set objTemplate = ActiveDocument.AttachedTemplate
        For Each rngTxt In ActiveDocument.Range.Characters
            If rngTxt.Font.ColorIndex = 5 Then
                txtMark = rngTxt.Text
                ActiveDocument.Bookmarks.Add Name:=txtMark, Range:=rngTxt.Start
                rngTxt.End = rngTxt.End + 1
                rngTxt.MoveEndWhile cset:=Array(wdTurquoise)
                Set objBuildingBlock = objTemplate.BuildingBlockEntries.Add(Name:=txtMark, Type:=wdBuildingBlockText, Range:=rngTxt)
                rngTxt.Delete
            End If
        Next
    End Sub
    lg Alex
     
  3. Gerhard H Erfahrener User
    Hallo Alex,

    "nicht zu funktionieren scheint" ist eine sehr untaugliche Fehlerbeschreibung. Wenn du dich mit VBA beschäftigen willst, ist fast das Wichtigste, was du lernen musst, Fehler zu benennen und zu beheben. Dazu gehst du den Code im Einzelschritt (Starten mit F8) durch und beobachtest die jeweils gelb unterlegte Zeile.

    Dein Code produziert zwei Syntaxfehler (Fehler, die verhindern, dass der Code überhaupt losläuft) in dieser Zeile
    Set objBuildingBlock = objTemplate.BuildingBlockEntries.Add(Name:=txtMark, Type:=wdBuildingBlockText, Range:=rngTxt)

    Erstens kennt er den Typ wdBuidlingBlockText nicht und zweitens fehlt ihm ein notwendiger Parameter.
    Beide Fehler kannst du mittels der VBA-Hilfe feststellen und beheben.

    Den ersten findest du, indem du das Add markierst und F1 drückst. Auf der aufgerufenen Seite findest du eine Aufstellung der notwendigen und optionalen Parameter und kannst so feststellen, dass du den Parameter Category vergessen hast. Der ist notwendig.

    Auf der gleichen Seite findest du einen Link zu den BuildingBlockTypes, wo du deinen Eintrag nicht findest. Wo hast du den her? Du kannst nicht einfach irgendwas erfinden.

    Wenn du das behoben hast, meldet dir die Einzelschrittmethode als nächstes einige Laufzeitfehler (Fehler, die erst bemerkt werden, wenn der Code läuft) in diesen Zeilen:
    ActiveDocument.Bookmarks.Add Name:=txtMark, Range:=rngTxt.Start
    rngTxt.End = rngTxt.End + 1
    rngTxt.MoveEndWhile cset:=Array(wdTurquoise)

    Hier versteh ich nicht mal, was du vorhattest.
    Was soll zum Beispiel cset:=Array(wdtourquoise) sein? cset muss ein Zeichen sein! Auch das erklärt dir die Hilfe.
    Am besten wäre, du formulierst mal in Worten, was geschehen soll. Ein Musterdokument dazu wäre auch nicht schlecht.
     
    Gerhard H, 21. Januar 2023
    #18
    1 Person gefällt das.
  4. Al3x05 User

    Mit Kontrollkästchen Text einfügen

    Lieber Gerhard!

    In der Tat habe ich was VBA betrifft noch mehr als genug zu lernen. Vielen Dank für deine Hilfe dabei!

    Ich möchte in Word 365 in einem Text in dem einige Wörter mit türkis hinterlegt sind, statt dem türkis hinterlegten Wort eine Textmarke (der Name der Textmarke soll das türkis hinterlegte Wort sein) einfügen. Der nachfolgende Text (nach einem Absatz) bis zum nächsten Wort, das türkis hinterlegt ist, soll als Textbaustein gespeichert (der Name des Textbausteines soll ebenfalls das türkis hinterlegte Wort sein) und anschließend gelöscht werden.
    Türkis habe ich nur als Beispiel genommen - es ist belanglos ob sich das Wort durch eine Farbe oder etwas anderes vom Text unterscheidet (z.B. ausgeblendet ist, kursiv geschrieben ist oder eine andere Schriftgröße hat).

    lg
     
  5. Gerhard H Erfahrener User
    Hallo Alex,

    du möchtest also aus den Bereichen zwischen den türkis hinterlegten Textstellen neue Autotexte erstellen, die in deiner Vorlage gespeichert werden sollen. Die Autotexte sollen als Namen den Inhalt der türkis hinterlegten Stellen bekommen.

    Dazu noch ein paar Fragen:
    • Dein Musterdokument bietet keine Möglichkeit, auch Text unberücksichtigt zu lassen. So kann z.B. zwischen den Tags "TMeins" und "TMzwei" kein Text stehen, der nicht zum Autotext gemacht werden soll. Ist das so geplant? Wenn nein, muss man Anfangs- und Ende-Tags setzen.
    • Kannst du dir vorstellen, dass statt nach Farben oder anderen Formatierungen auch nach speziellen Texten in den Tags gesucht werden kann? Das würde das Leben einfacher machen.
    • Was ich auch nicht verstanden habe: Du erstellst erst Textmarken aus dem türkisen Bereichen, um sie anschließend zu löschen? Brauchst du die nicht? Warum soll sie dann erst erstellt werden?
    Trotzdem hier schon mal ein Vorschlag, der statt nach Farben nach Tags sucht, die mit "xTM..." bzw "yTM..." beginnen.
    Dabei sind die Tags mit x die StartTags und die mit y die Ende-Tags.
    Die Tags müssen jeweils in einem einzigen Absatz stehen, und sie müssen, abgesehn von den Anfängen, verschieden lauten.

    Das Makro schleift durch die Absätze und macht um die Anfangs-Tags Textmarken mit dem Namen der Tags und Autotexte aus dem Text zwischen Anfangs- und Ende-Tags, die den gleichen Namen kriegen wie die Textmarke. Die Textmarken werden nicht gelöscht, weil ich nicht weiß, ob du sie noch brauchst. Du findest den Code im Modul der Userform im angehängten Dokument.
    Code:
    Sub cmdExecute_Click()
    Dim Suchbereich As Range, fundbereich As Range
    Dim vorspann As Range, abspann As Range
    Dim bmName As String, ATrange As Range
    
    'Dokument nach Textstellen durchsuchen, die mit xTM beginnen und mit xTM enden:
    Set Suchbereich = ActiveDocumenßt.Range
    
        With Suchbereich.Find
            .MatchWildcards = True
            .Text = "(xTM)(*)(yTM)"
          
            Do While .Execute
          
                'Fundstelle um den ersten und letzten Absatz (xTM...) kürzen
                Set fundbereich = .Parent
                fundbereich.Select '+++++++++++++
                Set vorspann = fundbereich.Paragraphs(1).Range
                Set abspann = fundbereich.Paragraphs.Last.Range
              
                'Textmarke setzen
                bmName = Left(vorspann.Text, Len(vorspann.Text) - 1)
                ActiveDocument.Bookmarks.Add Name:=bmName, Range:=vorspann
              
               'Autotext-Inhalt setzen
                Set ATrange = ActiveDocument.Range(Start:=vorspann.End, End:=abspann.Start - 1)
              
                MsgBox "Dies wird der Autotext namens " & bmName & ": " & vbLf & ATrange.Text  'nur zur Kontrolle
              
                Application.Templates(ActiveDocument.AttachedTemplate.FullName).BuildingBlockEntries.Add _
                Name:=bmName, Type:=wdTypeAutoText, Category:="Custom", Range:=ATrange
              
                'Suche mit dem letzten xTM-Absatz neu beginnen
                Suchbereich.SetRange abspann.Start, ActiveDocument.Range.End
              
            Loop
          
        End With
    Call testen   'nur zur Kontrolle, muss später raus
    
    Unload Me
    
    End Sub
    
    Private Sub testen()
    Application.Templates(ActiveDocument.AttachedTemplate.FullName).BuildingBlockEntries("xTM2Start").Insert _
    where:=ActiveDocument.Paragraphs.Last.Range
    End Sub
     
    Gerhard H, 22. Januar 2023
    #20
    1 Person gefällt das.
  6. Al3x05 User
    Lieber Gerhard!

    Obwohl meine Angaben, wie ich jetzt merke, etwas unpräzise waren, hast du den Nagel auf den Kopf getroffen!
    Vielen, vielen Dank!

    Ist es auch möglich die Anfangs Tags (xTM) bei den Textmarken und den Autotexten wegzulassen?

    lg Alex
     
  7. Gerhard H Erfahrener User
    Hallo Alex,

    "Ist es auch möglich die Anfangs Tags (xTM) bei den Textmarken und den Autotexten wegzulassen?"
    Wie meinst du das? Die Autotexte werden doch sowieso ohne Tags gespeichert. Die Tags in deinem Dokument brauchts doch, um die Autotexte zu kennzeichnen. Die kannst du doch nicht weglassen. Oder meinst du, Tags (und damit auch die Textmarken) nach Erstellung der Autotexte wieder zu löschen? Das ginge, indem du am Ende einfach nochmal eine Schleife über alle Textmarken läufst und die löscht.
     
    Gerhard H, 23. Januar 2023
    #22
  8. Al3x05 User

    Mit Kontrollkästchen Text einfügen

    Lieber Gerhard!

    Entschuldige bitte.
    Im Dokument selbst soll sich nichts ändern. Ich meine die Namen der Textmarken und Autotexte.

    lg Alex
     
  9. Gerhard H Erfahrener User
    Tut mir leid, ich verstehs immer noch nicht:
    "Ich meine die Namen der Textmarken und Autotexte"

    Weder Textmarken noch Autotexte sind ohne Namen möglich. Sinnlos wäre es obendrein, denn wie willst du sie denn ansprechen?

    Da ich nicht weiß, wo das Problem liegt, hier noch mal der derzeitige Sachstand:
    Das Makro erzeugt die Textmarken um die Tags in dem Dokument, das bei Makrostart das aktive ist (das kann die Vorlage selbst sein oder eine Kopie davon als docx). Die Autotexte werden zwangsläufig in der Dokumentvorlage gespeichert, sind aber aus der Kopie heraus abrufbar.

    Die Namen der und der Autotexte sind gleich. Sie lauten genau so wie die Anfangs-Tags (xTM...)Textmarkennamen kannst du unter Einfügen > Links > Textmarke besichtigen, die Namen der Autotexte unter Einfügen > Text > Bausteinmanager (früher Organizer für Bausteine).

    Jetzt hätt ich gern eine konkrete Aussage, was genau du weglassen willst. Auch eine Information, wozu du die Textmarken brauchst, wäre vielleicht hilfreich, denn für die Aufgabenstellung wären sie nicht unbedingt erforderlich.
     
    Gerhard H, 24. Januar 2023
    #24
  10. Al3x05 User
    Lieber Gerhard!

    Zur Erklärung: Dieses zweite Makro dient der Vorbereitung des ersten Makros (siehe oben). Deshalb hab ich kein neues Thema begonnen. Das erste Makro fügt Autotexte an Textmarken in ein Dokument ein wenn z.B. eine Checkbox angehakt ist. Vorraussetzung dafür ist, dass 1. die Textmarke, 2. der Autotext und 3. die Checkbox den gleichen Namen haben.

    Da ich in einem Dokument sehr viele Autotexte einfügen möchte, ist es einfacher und auch weniger fehleranfällig, den Namen nur einmal (z.B. ausgeblendet) im Dokument anzuführen und dann mit dem zweiten Makro zumindest die Namen der Textmarke und der Autotexte richtig zu haben. Die Namen der Checkboxen muss man dann ohnehin händisch ergänzen. Für das zweite Makro macht es Sinn, dass die Textmarken und Autotexte in einer Vorlage gespeichert werden.

    Die Frage "Ist es auch möglich die Anfangs Tags (xTM) bei den Textmarken und den Autotexten wegzulassen?" hat sich auf die Namen der Textmarken und der Autotexte bezogen. In dem von dir erstellten zweiten Makro, für das ich mich nochmal bedanken möchte, wird der Name der Textmarke und des Autotextes immer mit "xTM" begonnen. Dann kommt in deinem Beispiel "1Start" insgesamt lautet der Name von Textmarke und Autotext also "xTM1Start". Damit das bei mehreren Textmarken bzw. Autotexten übersichtlicher wird, würde es helfen wenn man den Namen ohne "xTM" festlegen könnte. Aus deinem Beispiel also "1Start" statt "xTM1Start" (das soll jetzt nur als Beispiel herangezogen werden - man müsste den Namen "1Start" noch ändern, da eine Textmarke nicht mit einer Ziffer beginnen kann).

    Vielen Dank für die Mühe!

    lg
     
  11. Gerhard H Erfahrener User
    Hallo Alex,

    jetzt hab ich immerhin so viel verstanden: Du möchtest nicht den kompletten Textmarken-bzw. Autotext-Namen entfernen, sondern nur den Teil "xTM".
    Dazu musst du einfach wissen, dass du nicht gezwungen bist, die Tags 1:1 als Textmarken- bzw. Autotextnamen zu übernehmen. Mittels Zählschleife und einfachen Textfunktionen kannst du die Namen "schlanker" und trotzdem unterscheidbar machen:

    Da du offenbar viele Textmarken/Autotexte planst, sollten sie sich durch eine fortlaufende Nummerierung unterscheiden. Da Textmarken nicht mit einer Zahl beginnen dürfen, muss ein "Präfix" in Form eines Buchstabens sein, an den diese Nummer angehängt wird.

    Diese Nummerierung wird im Makro durch eine Zählvariable, erzeugt, die während des Suchdurchgangs bei jedem Treffer um 1 hochzählt. Sie beginnt bei 100, damit die Autotexte bis Nr 999 dreistellig bleiben. Mehr wirds ja hoffentlich nicht werden.

    Der Textmarkenname setzt sich zusammen aus dem immer gleiches Präfix (hier: T), gefolgt von der Zählvariable. Auf diese Weise gleicht keine Textmarke der anderen und keine beginnt mit einer Zahl. Der Autotextname wird wie bisher auch genau so übernommen.

    Das folgende Makro kannst du testhalber auf das Dokument aus Beitrag 20 anwenden.
    Code:
    Option Explicit
    Sub cmdExecute_Click()
    Dim Suchbereich As Range, fundbereich As Range
    Dim vorspann As Range, abspann As Range
    Dim bmName As String, ATrange As Range
    Dim zaehler As Long
    
    zaehler = 100
    
    'Dokument nach Textstellen durchsuchen, die mit xTM beginnen und mit yTM enden:
    Set Suchbereich = ActiveDocument.Range
    
        With Suchbereich.Find
            .MatchWildcards = True
            .Text = "(xTM)(*)(yTM)"
           
            Do While .Execute
                zaehler = zaehler + 1
                'Fundstelle um den ersten und letzten Absatz (xTM...) kürzen
                Set fundbereich = .Parent
                fundbereich.Select '+++++++++++++ kann später raus
                Set vorspann = fundbereich.Paragraphs(1).Range
                Set abspann = fundbereich.Paragraphs.Last.Range
               
                'Textmarke setzen
                'bmName = Left(vorspann.Text, Len(vorspann.Text) - 1) & zaehler
                bmName = "T" & zaehler
                MsgBox bmName
                ActiveDocument.Bookmarks.Add Name:=bmName, Range:=vorspann
               
               'Autotext-Inhalt setzen
                Set ATrange = ActiveDocument.Range(Start:=vorspann.End, End:=abspann.Start - 1)
               
                'MsgBox "Dies wird der Autotext namens " & bmName & ": " & vbLf & ATrange.Text  'nur zur Kontrolle
               
                Application.Templates(ActiveDocument.AttachedTemplate.FullName).BuildingBlockEntries.Add _
                Name:=bmName, Type:=wdTypeAutoText, Category:="Custom", Range:=ATrange
               
                'Suche mit dem letzten xTM-Absatz neu beginnen
                Suchbereich.SetRange abspann.Start, ActiveDocument.Range.End
               
            Loop
           
        End With
    
    Unload Me
    End Sub
    
    
     
    Gerhard H, 24. Januar 2023
    #26
    1 Person gefällt das.
  12. Al3x05 User
    Vielen Dank!
    Ich werde das testen.

    lg Alex
     
Thema:

Mit Kontrollkästchen Text einfügen

Die Seite wird geladen...
  1. Mit Kontrollkästchen Text einfügen - Similar Threads - Kontrollkästchen Text einfügen

  2. Kontrollkästchen (mehrere) Makro kopieren, Problem: Zellen nicht gegenseitig überschreiben

    in Microsoft Excel Hilfe
    Kontrollkästchen (mehrere) Makro kopieren, Problem: Zellen nicht gegenseitig überschreiben: Hallo zusammen, ich arbeite gerade an einer Vereinfachung für Bestellungen. Ich habe es hingekriegt, dass Kontrollkästchen an zu wählen sind und dann bestimmte Informationen kopiert werden. Jetzt...
  3. VBA = Text ein- und ausblenden per Kontrollkästchen

    in Microsoft Word Hilfe
    VBA = Text ein- und ausblenden per Kontrollkästchen: Hallo liebe Spezialisten des grossen Officepaketes, nach dem ich eine Weile durch das Forum gelesen habe stelle ich fest, dass ich nur eine ganz kleine schwache Leuchte bin was Office angeht....
  4. Wenn Kontrollkästchen aktiviert wird dann Text kopieren

    in Microsoft Excel Hilfe
    Wenn Kontrollkästchen aktiviert wird dann Text kopieren: Hallo, ich bin dabei eine Kundenanalyse in Excel zu erstellen, aber leider bin ich nicht so fit im VBA Bereich. Meine Exceldatei ist wie folgt aufgebaut: Es gibt die Arbeitsmappen...
  5. Wenn Kontrollkästchen aktiviert dann Text fett und farbig formatieren

    in Microsoft Excel Hilfe
    Wenn Kontrollkästchen aktiviert dann Text fett und farbig formatieren: Hallo zusammen, ich habe eine Excel Arbeitsmappe.(Screenshot im Anhang) Wenn ich hier jetzt eines der Kontrollkästchen in Spalte D aktiviere, dann sollte der Text in der Zelle daneben in Spalte C...
  6. Kontrollkästchen Vorangegangenen Text kopieren

    in Microsoft Excel Hilfe
    Kontrollkästchen Vorangegangenen Text kopieren: Hallo, Ich habe folgendes Problem: Ich habe eine Spalte mit Waren (ungefähr 50 Stück untereinander stehend), davor habe ich vor jeder Ware ein Kontrollkästchen. Ich möchte erreichen, daß die...
  7. Text über Kontrollkästchen ein-/ausblenden

    in Microsoft Word Hilfe
    Text über Kontrollkästchen ein-/ausblenden: Word 2003, english **************** Hallo, in einem Word Dokument soll eine Tabelle mit Text erscheinen, wenn eine Checkbox angehakt wird. --> Siehe Anhang. Ich bin leider nicht so der...
  8. Kontrollkästchen-Text bei Aktivierung in anderem Blatt

    in Microsoft Excel Hilfe
    Kontrollkästchen-Text bei Aktivierung in anderem Blatt: HalliHallo, hab da mal zwei Fragen... 1. Wie kann ich einen Kontrollkästchen-Text bei Aktivierung in anderem Blatt anzeigen lassen. Konkret: Ich habe ein Kästchen mit dem Text...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden