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; Hallo, ich arbeite mit Word 365 und möchte gerne mit dem Anklicken eines Kontrollkästchens ein neues Dokument aufgrund einer Vorlage erstellen und in... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von Al3x05, 8. Januar 2023.

  1. Al3x05 User

    Mit Kontrollkästchen Text einfügen


    Hallo,

    ich arbeite mit Word 365 und möchte gerne mit dem Anklicken eines Kontrollkästchens ein neues Dokument aufgrund einer Vorlage erstellen und in diesem Dokument an einer bestimmten Stelle (Textmarke) einen Text (AutoText) einfügen.

    Hat jemand eine Idee wie sich das anstellen lässt?

    Vielen Dank im Vorraus und liebe Grüße

    Alex
     
    Al3x05, 8. Januar 2023
    #1
  2. Gerhard H Erfahrener User
    Hallo Alex,

    du hast also ein Dokument mit dem Kontrollkästchen und dem geplanten Makro (hier Startdokument genannt) und eine Dokumentvorlage (Zieldokument) aus der du ein neues Dokument aufrufen willst , und deren Textmarke du füllen willst.

    Kannst du außerdem noch ein paar Informationen nachreichen?

    Zieldokument:
    Um welchen Dateityp handelt es sich (dotx oder dotm)?
    Ist seine Textmarke eine geschlossene (d.h. bei markiertem Bereich erstellte) oder eine offene (d.h. bei blinkender Schreibmarke erstellte)?

    Startdokument:
    Basiert es auf der gleichen Dokumentvorlage wie das Zieldokument oder auf einer anderen?
    Um welchen Typ von Kontrollkästchen handelt es sich beim Startdokument (aus den Inhaltssteuerelementen oder aus den Formularen aus Vorversionen)?

    Autotext:
    Wo ist er gespeichert? (Dokumentvorlage des Zieldokuments, Dokumentvorlage des Startdokuments, deine normal.dotm, deine Building Blocks.dotx?
     
    Gerhard H, 8. Januar 2023
    #2
    1 Person gefällt das.
  3. Al3x05 User
    Lieber Gerhard!

    Vielen Dank für die rasche Antwort!

    Das Zieldokument ist eine .dotx. Im Zieldokument sind mehrere Absätze. An gewissen Stellen (offene Textmarken) im Zieldokument sollen dann verschiedene AutoTexte eingefügt werden. Die offenen Textmarken sowie die AutoTexte sind im Zieldokument gespeichert.

    Als Startdokument ist eine .dotm Datei geplant. Hier sollen nur die Kontrollkästchen sein. Idealerweise sollen die Kontrollkästchen aus den Formularen aus Vorversionen kommen und das Makro erst mit dem Klick auf einen noch einzufügenden Start-Button gestartet werden. Damit sollte es möglich sein, mehrere Kontrollkästchen einzufügen um das Einfügen der AutoTexte dann gesammelt durchzuführen.

    lg
     
    Al3x05, 8. Januar 2023
    #3
  4. Gerhard H Erfahrener User

    Mit Kontrollkästchen Text einfügen

    Hallo nochmal,

    ich versteh nicht so recht, warum du für dein Vorhaben ein externes Dokument brauchst, zumal das nur aus Kontrollkästchen bestehen soll. Wäre es da nicht einfacher, aus dem Zieldokument heraus eine Userform aufzurufen und dort die Kontrollkästchen unterzubringen?

    In der Zwischenzeit trotzdem ein erster Vorschlag mit externem Dokument. Er zeigt beispielhaft den Code für zwei Kontrollkästchen:
    Code:
    Private Sub cmdUebertrag_Click()
    Dim startdoku As Document, zieldoku As Document, bm As Bookmark
    Dim autName As String, suffix As String
    Dim i As Long
    
    suffix = "Autotext"
    Set startdoku = ThisDocument
    Set zieldoku = Documents.Add(ThisDocument.Path & "\zielvorlage.dotx")
    
        For i = 1 To startdoku.FormFields.Count
            If startdoku.FormFields(i).Type = wdFieldFormCheckBox Then
                 If startdoku.FormFields(i).CheckBox.Value Then
                     Set bm = zieldoku.Bookmarks("bmk" & suffix & i)
                     autName = "aut" & suffix & i
                     Application.Templates(zieldoku.AttachedTemplate.FullName) _
                     .BuildingBlockEntries(autName).Insert where:=bm.Range
                 End If
             End If
        Next i
    End Sub
    Dieser Code ist im startdokument.dotm (siehe angehängte zip-Datei) enthalten. Dort findest du auch nähere Hinweise. Bedenke, dass dieser Vorschlag ein "Rohbau" ohne jede Fehlerbehandlung ist.

    Falls du auf eine Userform umschwenken willst und dazu weitere Hilfe brauchst, lad doch bitte deinerseits ein Startdokument mit Userform und einigen wenigen Kontrollkästchen drin hoch.
     
    Gerhard H, 9. Januar 2023
    #4
    1 Person gefällt das.
  5. Al3x05 User
    Lieber Gerhard!

    Vielen Dank für deine Hilfe!

    Mit Userform hatte ich bis jetzt noch nicht zu tun. Wichtig dabei wäre nur, dass dabei niemand die Vorlage (das Zieldokument) verändern kann. Das Dokument, das schlussendlich erstellt werden soll kann natürlich verändert werden.

    Anbei findest du die Startdatei "Makro Einfügen.docm" samt Userform und meinem gescheiterten Versuch.
    Wie du unschwer erkennen kannst bin ich noch am Anfang mit VBA.

    Ist es möglich die Kontrollkästchen auch nicht zu sperren, sodass man sie durch "einfaches anklicken" aktivieren bzw deaktivieren kann?

    lg Alex
     
    Al3x05, 9. Januar 2023
    #5
  6. Gerhard H Erfahrener User
    Hallo Alex,

    hier ein Beispiel für das Eintragen der Autotexte via Userform.
    Benötigt wird eine Dokumentvorlage (*.dotm), denn nur dort können Autotexte gespeichert werden.

    Die Dokumentvorlage enthält:
    • Drei Autotexte namens AT1_1, AT1_2 und AT2
    • Drei Textmarken mit den selben Namen
    • Eine Userform mit Checkboxen, ebenfalls mit den Namen AT1_1, AT1_2 und AT2
    Die identische Benamung hat den Zweck, das Makro schlank zu halten.

    Die Userform startet, wenn jemand die Dokumentvorlage doppelklickt, um eine Kopie davon zu erhalten. Das macht die Prozedur Private Sub Document_New im Modul ThisDokument

    Das Makro schleift die Checkboxen durch und fügt an den entsprechenden Textmarken die Autotexte ein. Hier der Code (ist in der Vorlage bereits enthalten):
    Code:
    Private Sub cmdstart_Click()
    Dim bmName As String, bmRange As Range
    Dim i As Long
    
    For i = 0 To Controls.Count - 1
        If TypeName(Controls(i)) = "CheckBox" Then
           
            'die Textmarke mit dem Namen des Controls behandeln:
            bmName = Controls(i).Name
            Set bmRange = ActiveDocument.Bookmarks(bmName).Range
       
                If Controls(i).Value Then
                    'gleichnamigen Textbaustein einfügen
                    Application.Templates(ThisDocument.AttachedTemplate.FullName) _
                    .BuildingBlockEntries(bmName).Insert where:=bmRange
                Else
                    'Textmarke leeren
                    bmRange = "  " '<-- mindestens 1 Leerzeichen
                End If
               
                'Textmarke wiederherstellen
                ActiveDocument.Bookmarks.Add Name:=bmName, Range:=bmRange
             End If
        Next i
    Unload Me
    End Sub
    
    Noch eine Bemerkung zur Sicherheit: Einen echten Schutz gegen willkürliche Änderungen in einem Word-Dokument gibts nicht. Alle Schutzmaßnahmen richten sich gegen versehentliche Änderungen.
    Ein gewisser Schutz ist schon dadurch gegeben, dass die Anwender nicht mit dem Original hantieren, sondern mit einer Vorlage. Weitere Schutzmaßnahmen kann man sich überlegen, falls gewünscht.
     
    Gerhard H, 10. Januar 2023
    #6
    1 Person gefällt das.
  7. Al3x05 User
    Lieber Gerhard!

    Ganz herzlichen Dank für deine Unterstützung!

    lg
     
  8. Al3x05 User

    Mit Kontrollkästchen Text einfügen

    Hallo!

    Noch eine zusätzliche Frage: Ist es möglich die Checkboxen miteinander zu verknüpfen? z.B.:
    1.) wenn die Checkbox AT1_1 angehakt ist, dann soll die Checkbox AT1_2 nicht angehakt sein,
    2.) wenn die Checkbox AT1_1 angehakt ist, soll auch die Checkbox AT1_1_1 angehakt sein.

    lg Alex
     
  9. Gerhard H Erfahrener User
    Hallo Alex,

    sich ausschließende Controls:
    dafür verwendest du am besten keine Checkboxen, sondern die runden Optionsfelder. Die kannst du gruppieren, indem du ihnen in den Eigenschaften einen gleichen GroupName verpasst. Innerhalb einer Gruppe kann dann immer nur ein Optionbutton aktiv sein, die andern werden automatisch ausgeblendet.

    Wenn du diese Optionbuttons in der Prozedur Private Sub cmdstart_Click (Beitrag #6) mit abfragen willst, musst du sie ein bisschen erweitern:
    Code:
    '...If TypeName(Controls(i)) = "CheckBox" Or _
        TypeName(Controls(i)) = "OptionButton" Then
    '...
    Parallel geschaltete Controls:
    Hier belässt du es bei den Checkboxen und musst dem steuernden Control einen Dreizeiler mitgeben, in deinem Beispiel so:
    Code:
    Private Sub AT1_1_Click()
    AT_1_1_1.Value = AT1_1.Value
    End Sub 
     
    Gerhard H, 13. Januar 2023
    #9
    1 Person gefällt das.
  10. Al3x05 User
    Vielen Dank!
     
  11. Al3x05 User
    Hallo!

    Eine Frage hat sich mir noch gestellt:
    Ist zusätzlich das Einfügen mehrerer AutoTexte an mehreren Textmarken mit dem anhaken nur einer Checkbox im Code (Beitrag #6) möglich?

    Ich würde mir das in der Art vorstellen:
    Wenn die Checkbox AT03 angehakt wird, werden die Autotexte AT03, AT03_1, AT03_2 und AT03_3 (also alle, die mit AT03 beginnen) an den jeweiligen Textmarken mit den gleichen Namen eingefügt.
    Wenn jedoch die Checkbox AT04 angehakt wird und es nur einen Autotext (AT04 samt gleichnamiger Textmarke) gibt, soll nach wie vor nur der Autotext AT04 an der Textmarke AT04 eingefügt werden.

    lg Alex
     
  12. Gerhard H Erfahrener User
    Hallo Alex,

    sorry, das wird mir zu verwickelt. Besonders, wenn die Ausnahmen dann auch noch mehrere Checkboxen betreffen, würde sich der Code endlos verschlingen, da du jedesmal eine Extra-Schleife für die "Unter-Textmarken" einfügen müsstest.

    Ich würde so vorgehen, dass ich in der Userform alle Checkboxen, für die es Textmarken gibt, drinlasse und für die Checkboxen mit parallel zu schaltenden "Untercheckboxen" das Verfahren aus Beitrag 9 anwende. Zusätzlich kannst du in den Eigenschaften für die Unter-Checkboxen Enabled = false einstellen (gleich händisch beim Entwurf der Userform).

    Damit stellst du mit dem unveränderten Start-Makro sicher, dass alle Textmarken ausgefüllt /geleert werden und, dass man das Parallel-Schalten nicht zurücknehmen kann.
     
    Gerhard H, 15. Januar 2023
    #12
    1 Person gefällt das.
  13. Al3x05 User

    Mit Kontrollkästchen Text einfügen

    Lieber Gerhard!

    Vielen lieben Dank für die rasche Antwort und den super Hinweis!

    Ich hab die "Haupt-Checkbox" über die "Untercheckboxen" gezogen und so "versteckt".

    Kann man die "Untercheckboxen" in der Userform lassen aber beim Ausführen des Makro komplett ausblenden?

    lg Alex
     
  14. Al3x05 User
    Lieber Gerhard!

    Noch eine Frage zu Beitrag #6:

    Welchen Zweck hat es, die Textmarken wieder zu leeren? Ich hab nämlich mit den Leerzeichen, wenn es mehrere Varinaten an derselben Stelle gibt, ein Problem.

    lg Alex
     
  15. Gerhard H Erfahrener User
    Hallo Alex,

    zu #14
    das Leeren der Textmarken hatte ich ursprünglich für den Fall vorgesehen, dass das Einfügen der Autotexte direkt über Checkbox_Click erfolgt. Dann hätte man eine Fehlentscheidung auch direkt per erneutem Klick auf die Checkbox wieder revidieren wollen können.
    Ich kann mich jetzt gar nicht erinnern, ob diese Variante überhaupt zur Debatte stand; in der Variante via Startknopf ist das jedenfalls überflüssig. Wer erst dann merkt, dass er sich vertan hat, nachdem der Startknopf gedrückt wurde, muss das Dokument nochmal neu anfertigen. Also raus mit dem Else-Teil.

    zu #13
    Wenn du die Eigenschaften der Checkboxen durchguckst, wirst du auch die Eigenschaft Visible sehen. D.h. du kannst die Checkboxen von anfang an unsichtbar formatieren und sie werden trotzdem bedient.

    Allerdings würde ich auf alle Fällen dafür Sorge tragen, dass sie bei Start der Userform alle den einheitlichen Status haben, vermutlich inaktiv.

    Das würde ich über das Ereignis Private Sub Userform_Initialize() erledigen. Dieses Ereignis feuert, sobald die Userform aufgerufen wird. Folgendes Makro käme dann noch mit ins Modul der Userform:
    Code:
    Private Sub UserForm_Initialize()
    Dim i As Long
    
    For i = 0 To Controls.Count - 1
        If TypeName(Controls(i)) = "CheckBox" Then
          Controls(i).Value = False
        End If
    Next i
    End Sub
     
    Gerhard H, 15. Januar 2023
    #15
    1 Person gefällt das.
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