Office: Bookmarks und Textfelder per VBA Conmadobutton ansprechen

Helfe beim Thema Bookmarks und Textfelder per VBA Conmadobutton ansprechen in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe eine vermutlich 2 triviale Fragen, komme im Moment aber nicht weiter. Ich habe ein Word 2007 Dokument mit einer Bookmark... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von FRB_Office, 9. Juli 2013.

  1. FRB_Office Erfahrener User

    Bookmarks und Textfelder per VBA Conmadobutton ansprechen


    Hallo zusammen, ich habe eine vermutlich 2 triviale Fragen, komme im Moment aber nicht weiter. Ich habe ein Word 2007 Dokument mit einer Bookmark namens "Procedere". Weiter habe ich eine UserForm mit einem Commandobutton "CboProcedere". Wenn ich CboProcedere anklicke, soll der Curser zur Bookmark springen und ich möchte dann sofort schriben können. Bei meinen Lösungen springt der Curser dann zwar zur Bookmark, ich kann dann aber nicht schreiben.

    In Einem anderen Teil des Word Dokumentes habe ich ein Textfeld ("Beurteilung"). in Meiner Userform habe ich ein Textfeld, in dem ich den Text eingeben möchte und per "CboOK" Comandobutton den Text aus der Userform in das Dokumententextfeld "Beurteilung" einfügen möchte. Nun ist es aber wichtig, dass wenn ich dies ein zweites mal mache, der erste Texteintrag durch den zweiten gelöscht wird.

    Kann jemand helfen oder hat einen geeigneten Link?

    Danke und Gruß, FRB
     
    FRB_Office, 9. Juli 2013
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    ad 1) Bookmark namens "Procedere" im Word-Dokument:
    Du hast ferner eine Userform. Auf dieser hast Du einen Button mit dem Namen "CboProcedere".
    Wenn Du auf diesen klickst, möchtest Du zur Bookmark "Procedere" springen; dabei soll der Fokus (das Ziel Deiner Tastatureingaben) von der UserForm wechseln zum Word-Dokument und dann zur Stelle der Bookmark.
    a) Es gilt da zuerst ein Problem zu überwinden: die Userform ist nämlich von Haus aus modal, d.h. sie ist das dominierende Ziel für sämliche Ereignisse (seien es jetzt Mausklicks oder Tastatureingaben).
    Die Userform hat aber in ihrer Eigenschaftenliste die Eigenschaft "Showmodal". Diese ist standardmäßig auf "True" eingestellt. Dieser Wert ist in der Userform händisch auf "False" zu stellen (das kann man leider nicht per Programm machen).
    b) Dann musst Du folgenden Code ins Codemodul der Userform kopieren:
    Code:
    Private Sub CboProcedere_Click()
      
      ActiveDocument.GoTo(What:=wdGoToBookmark, Name:="Procedere").Select
      Application.Activate
      
    End Sub
    
    Die 1. Codezeile springt zur besagten Bookmark, während die 2. Codezeile dann die Umschaltung der Tastatur von der Userform ins Word-Dokument ausführt. Dabei bleibt die Userform immer noch zu oberst am Bildschirm sichtbar.

    ad 2) Textfeld namens "Beurteilung" im Word-Dokument:
    Auf der Userform befinde sich ein Textfeld namens "txtBeurteilung" und ein Button namens "CboOK": Klickt man auf diesen, wird der Inhalt von "txtBeurteilung" in das Textfeld "Beurteilung" des Word-Dokumentes transferiert. Dabei soll eventuell schon im Textfeld vorhandener Text durch den neuen Text aus "txtBeurteilung" überschrieben werden.
    a) Da bin ich mir nicht sicher, ob mein nachfolgender Code unter Word2007 funktioniert - ich habe leider "nur" mehr Word2010 und Word2013 zur Verfügung. Du müsstest es ausprobieren, ob er funktioniert.
    Code:
    Private Sub CboOk_Click()
      
      ActiveDocument.Shapes.Range(Array("Beurteilung")).Select
      Selection.ChildShapeRange.TextFrame.TextRange.Text = Me.txtBeurteilung
      
    End Sub
    
     
    Exl121150, 14. Juli 2013
    #2
  3. FRB_Office Erfahrener User
    Hallo Anton EXL,

    vielen Dank für die Antwort, der erste Befehl hat geklappt, der zweite nicht. Ich habe bei meinem Video Tutorial (Video2Brain) hierzu folgende Property gefunden:
    Property Get Textmarke(strName As String) As String
    If ActiveDocument.Bookmarks.Exists(strName) Then
    Textmarke = ActiveDocument.Bookmarks(strName).Range.Text
    Else
    Textmarke = ""
    End If

    End Property
    Property Let Textmarke(strName As String, strText As String)
    Dim rngTM As Range
    If ActiveDocument.Bookmarks.Exists(strName) Then
    Set rngTM = ActiveDocument.Bookmarks(strName).Range
    rngTM.Text = strText
    rngTM.Bookmarks.Add strName
    Else
    MsgBox "Im Dokument fehlt die Textmarke " & strName & ".", vbCritical
    End If

    End Property

    Wenn ich das im Direktbereich versuche über ?Textmarke("Beurteilung") teste, funktioniert das Lesen, wenn ich über: Textmarke("Beurteilung")="irgend etwas eingeben" eine Text einfüge, überschreibt er den vorherigen Wert in der Bookmark und ersetzt ihn durch "irgend etwas eingeben". Zusätzlich überprüft diese Propertey netterweise noch ob die Bookmark überhaupt existiert. So weit so gut, aber wie bekomme ich das jetzt in die UserForm- respektive Dokumentenumgebung. Wo muss ich denn diese Property hinschreiben/kopieren? In die Commando Button Funktion etwa oder in die Public Deklaration?
    Vielen Dank und Gruß, FRB
     
    FRB_Office, 16. Juli 2013
    #3
  4. Exl121150 Erfahrener User

    Bookmarks und Textfelder per VBA Conmadobutton ansprechen

    Hallo,

    die PROPERTY GET/LET/SET Prozeduren/Funktionen sind gedacht zur Deklarationen von Eigenschaften für Objekte in Klassenmodulen und nicht für Event-Handler-Routinen in UserForms.
    Am besten nimmst Du einfach die Innereien der Property-Let-Prozedur her, denn diese ist bestimmt für die Wertzuweisung an eine Textmarken-Eigenschaft eines Objektes, jedoch ohne die beiden Parameter "strName" und "strText" - diese muss Dein Makro intern beisteuern (rot gefärbte Stellen):

    Code:
    Private Sub CmdOk_Click()
      Dim rngTM As Range
      Dim strName As String
      
      [COLOR=#ff0000]strName = "Beurteilung"[/COLOR]
      If ActiveDocument.Bookmarks.Exists(strName) Then
        'Holt sich den Text[U]bereich[/U], der in der bestehenden Textmarke enthalten ist;
        '(dieser soll ja ersetzt werden durch den neuen Text)
        Set rngTM = ActiveDocument.Bookmarks(strName).Range
        'und speichert in diesen Textmarkenbereich den Inhalt des Formulartextfeldes
        rngTM.Text = [COLOR=#ff0000]Me.txtBeurteilung[/COLOR]
        'und fügt die bestehende Textmarke mit neuem Textinhalt wieder an die
        'Textmarkenauflistung an:
        rngTM.Bookmarks.Add Name:=strName
      Else
        MsgBox "Textmarke '" & strName &"' existiert nicht!"
      End If
    End Sub
    
     
    Zuletzt bearbeitet: 18. Juli 2013
    Exl121150, 18. Juli 2013
    #4
  5. FRB_Office Erfahrener User
    Hallo Anton Exl,

    Gott wie lange habe ich nach diesem Code gesucht, dabei lag - wie vermutet - eine grundsätzliches Verständnisproblem vor. Es funktioniert genau wie ich es mir vorgestellt habe. Geht das auch mit Kombinationsfelder/Listenfeldern, Kontrollkästchen und Optionsfeldern. Kann ich hier den Befehl zum Erhalten der Textmarke und die "Überschreibbarkeit), so wie Du ihn mir so schön vorgegeben hast gleich mit benutzen und kann ich dass in den gleichen Code ("Private Sub CmdOK_Click()") einfügen, also folgenden Scenario:

    TextBox in UserForm namens "txtBeurteilung" -> Übergibt Text an Bookmark "Beurteilung" (wie gehabt, s.o)
    Optionsfeld in Userform namens "OptOut" mit drei Optionen ("1", "2" und "3") -> Übergibt jeweiligen Text an Bookmark "Option"
    Kombinationsfeld in Userform namens "KombiX" mit 3 Optionen ("a", "b" und "c") -> Übergibt jeweiligen Text an Bookmark "Option"
    Kontrollkästchen namens "ControlX" -> übergibt nur dann, wenn es angeklickt ist den Text "Zusatzinfo" an die Bookmark "Kontrolle"

    Alles soll mit einem Klick auf CmdOK erfolgen und wie in obigem Code überschreibbar (also änderbar) sein, geht dass alles in eine sub? muss man da Reihenfolgen beachten?

    Wenn das ginge hätte ich mein kleines "Programm" (übrigens mein erstes!) fertig, vielen Dank schon mal für die Mühe,

    Gruß, FRB
     
    FRB_Office, 18. Juli 2013
    #5
  6. Exl121150 Erfahrener User
    Hallo,

    in der beiliegenden Word-Datei habe ich eine Demo-Userform "UserForm1" eingebaut und außerdem ein Objekt namens "KlasseTextmarke".

    Dieses Objekt besitzt die Eigenschaft "Textmarke", mit deren Hilfe man die Werte von Textmarken aus dem aktiven Worddokument auslesen und auch Werte in diese Textmarken hinschreiben kann.

    Die UserForm1 besitzt an Steuerelementen die von Dir gewünschte Ausstattung:
    - 1 TextBox "txtBeurteilung" mit Vorbesetzung "Beurteilungstext"
    - 3 OptionBoxes "OptOut1", "OptOut2", "OptOut3", die sich in der Gruppe "OptOut" befinden, umrahmt von einem Optionenrahmen "Frame1", wobei in der Vorbesetzung die erste ausgewählt ist.
    - 1 Checkbox "ControlX" mit leerer Vorbesetzung und Beschriftung "Zusatzinfo"
    - 1 Combobox "KombiX" mit 3 Listeneinträgen ("a", "b", "c")
    - 1 Button mit Beschriftung "Gehe zu Procedere", mit dessen Hilfe man zur Textmarke "Procedere" im aktiven Word-Dokument springen kann.
    - 1 Button mit Beschriftung "Ok", mit dessen Hilfe man die Inhalte der Steuerelement ins aktive Worddokument transferieren kann und zwar zu den Textmarken "Beurteilung", "Option", "Kombowert" und "Kontrolle".
    - 1 Button mit Beschriftung "Form schließen", mit dessen Hilfe man die Userform schließen (=verbergen) kann.
    Dabei ist der "Ok"-Button der Default-Button, d.h. er ist unter den 3 Buttons per Voreinstellung der aktive (seine Default-Eigenschaft ist 'True')
    Die Eigenschaft "ShowModal" der Userform ist "False".

    Die UserForm1 kann man aus dem aktiven Word-Dokument heraus mittels der Tastenkombination Alt+F8 aufrufen, indem man dann das Makro "ZeigeForm" ausführt.
     
    Exl121150, 19. Juli 2013
    #6
  7. unverbogen Neuer User
    Hallo,

    bezogen auf Scripte etc. bin auch ich absoluter Neuling. Ich vermute jedoch, dass ich an dieser Stelle richtig nachfragen kann.

    Wir suchen für Word2010 eine Möglichkeit über das Menüband per Knopf Textmarken zu vergeben, d.h. mehrere Knöpfe für festdefinierte Textmarken.
    Jeder Druck definiert die entsprrechende Textmarke neu. Dabei sollen die Knöpfe ein wenig interaktiv sein und offenbaren, ob die Textmarke bereits existiert oder nicht. Ich bin mir nicht sicher, ob das realisiert werden kann.

    Vielen Dank für Eure Hilfe

    Unverbogen
     
    unverbogen, 24. Januar 2014
    #7
  8. illogic Neuer User

    Bookmarks und Textfelder per VBA Conmadobutton ansprechen

    Hallo,

    ich habe ein ähnliches Problem wie der Exl aber bin bisher nicht zu einer geeigneten Lösung gekommen.

    Ich habe ein Word Formular erstellt. Dieses Formular wird von Mitarbeitern genutzt um ihre Arbeiten zu protokollieren.
    In diesem Formular gibt es ein Texteingabefeld um erweiterte persönliche Schutzausrüstung einzutragen.
    Derzeit wird dieses Feld händisch durch Texteingabe befüllt.
    Ich würde es aber lieber so handhaben, das man in das Textfeld hinein klickt, sich eine Userform mit diversen Optionsfeldern öffnet in welchem der Mitarbeiter einfach die benötigten Optionen auswählt und diese dann von der Userform durch Bestätigung auf eine Schaltfläche "OK" in das dafür vorgesehene Textfeld übertragen werden.
    Ich hoffe ich schildere das ganze nicht zu kompliziert.

    Ist soetwas möglich? Und wenn ja, wie muss ich dafür vorgehen?

    Also die Userform würde z.b. "Erweiterte PSA" heissen.
    Optionen die darin enthalten sind wären z.B. "CSA, ASM, NBR-HS" etc.

    Ich hoffe hier kann mir jemand einen schubser in die richtige Richtung geben.
    Ich selbst bin was VBA angeht noch ziemlich grün hinter den Ohren. Daher wäre ein Code beispiel sicher sehr hilfreich.


    Gruß

    Manuel
     
    illogic, 5. Juni 2016
    #8
Thema:

Bookmarks und Textfelder per VBA Conmadobutton ansprechen

Die Seite wird geladen...
  1. Bookmarks und Textfelder per VBA Conmadobutton ansprechen - Similar Threads - Bookmarks Textfelder VBA

  2. Inhalt eines Hyperlink Feldes in ein Textfeld kopieren

    in Microsoft Access Hilfe
    Inhalt eines Hyperlink Feldes in ein Textfeld kopieren: Hallo, kurz vorweg, GRUNDkenntnisse sind ein paar vorhanden, VBA-Kenntnisse sind nicht vorhanden. Ich habe eine DB zum verwalten meiner Dokumente. In einem Endlosformular erzeuge ich mit Hilfe...
  3. [VBA] Excel Tabelle via Bookmark nach Word + Größe an Fenster anpassen

    in Microsoft Excel Hilfe
    [VBA] Excel Tabelle via Bookmark nach Word + Größe an Fenster anpassen: Hallo zusammen, kennt jemand einen Kniff, wie ich eine aus Excel kopierte Range (inkl. Formatierung, jedoch ohne Verknüpfung) an die Stelle eines Bookmarks in einem Word-Dokument als neue Tabelle...
  4. Bookmarks in Word auslesen und an Checkbox übergeben

    in Microsoft Excel Hilfe
    Bookmarks in Word auslesen und an Checkbox übergeben: Hallo geschätztes Forum, ich möchte aus einer Worddatei die Bookmarks (Textmarke) auslesen und diese jeweils an ein seperates Label einer Checkbox in einer UserForm weitergeben. Leider finde ich...
  5. UserForm mit Options-, Kombinations- und Textfeldern -> Bookmarks

    in Microsoft Word Hilfe
    UserForm mit Options-, Kombinations- und Textfeldern -> Bookmarks: Liebe alle, Ich habe eine Word-Datei mit 3 Bookmarks (BM1, BM2, BM3). Ich habe eine UserForm mit 3 Optionsfeldern (Opt1, Opt2, Opt3), einem Kombinationsfeld "KF" mit den Einträgen (Hund, Katze,...
  6. Bookmarks unterstreichen

    in Microsoft Word Hilfe
    Bookmarks unterstreichen: Hallo, ich habe eine Frage. Ich habe in Access 2010 in einem Formular einen Button programmiert. Der Button öffnet ein Word Dokument und setzt Text für Bookmarks ein. Jetzt will ich das der...
  7. Table of Bookmarks

    in Microsoft Word Hilfe
    Table of Bookmarks: Ich suche eine FeldFunktion um aus im Text gesetzten Markierungen (zB. die Bookmarks) ein Inhaltzverzeichnis zu erstellen, optimal waere es als Tabelle. zB.:...
  8. Aus Excel-Datei PDF mit Bookmarks erstellen

    in Microsoft Excel Hilfe
    Aus Excel-Datei PDF mit Bookmarks erstellen: Hallo zusammen, ich möchte aus einer großen Excel-Tabelle ein PDF mit Bookmarks (=Inhaltsverzeichnis mit Hyperlinks) erstellen, Umfang ca. 2.000 Seiten. Mit welchem Programm geht das bzw....
  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