Steuerelemente auf Word-Dokument ansprechen

Dieses Thema im Forum "Visual Basic" wurde erstellt von Willi007, 5 April 2004.

  1. Willi007

    Willi007
    Expand Collapse
    Guest

    Hallo,
    habe folgendes Problem:

    Um einen unnötig langen Code zu erstellen möchte ich meinen 20 Textboxen, welche sich auf einer Dokumentseite befinden nacheinender zum Beispiel innerhalb einer Schleife einen Wert zuorden. Ich will die Zuordung also nicht einfach mit:


    Text1.Text= "1"
    Text1.Text= "2"
    Text1.Text= "3" usw.


    erledigen, sondern elegant in einer Schleife.
    Mit welchen Objekten muss ich nun arbeiten um die Textboxen nacheinander namentlich zu erfahren und dann ansprechen zu können?

    Oder gibt es eine einfachere Möglichkeit???

    Vielen Dank,
    Willi
     
  2. Uwe Küstner

    Uwe Küstner
    Expand Collapse
    Member

    Registriert seit:
    23 Februar 2004
    Beiträge:
    178
    Zustimmungen:
    0
    Hallo Willi,

    hier mal ein Beispiel für 3 Textboxen mit den Namen Textbox1, Textbox2
    und Textbox3. Alle Objekte sind im selben Arbeitsblatt.
    Code:
    Private Sub CommandButton1_Click()
    Dim TB As Long
    For TB = 1 To 3
      Me.OLEObjects("Textbox" & TB).Object.Text = TB
    Next TB
    End Sub
    Ich habe gerade gesehen, daß es um Word geht.
    Also voriger Code bezieht sich auf Excel, nachfolgender auf Word:
    Code:
    Private Sub CommandButton1_Click()
    Dim oShape As Shape
    Dim I As Long
    For Each oShape In ActiveDocument.Shapes
      I = I + 1
      If oShape.OLEFormat.Object.Name = "TextBox" & I Then
        oShape.OLEFormat.Object.Value = I
      End If
    Next oShape
    End Sub
     
    #2 Uwe Küstner, 5 April 2004
    Zuletzt bearbeitet: 6 April 2004
  3. Willi007

    Willi007
    Expand Collapse
    Guest

    Problembehandlung

    Hallo Uwe,

    Kann das wirklich so funktionieren?

    Bei mir tut sich überhaupt nichts.

    Nochmal zum Verständnis:

    Es sind ganz normale Textboxen aus der Steuerelemente-Toolbox welche sich ganz normal auf meinem Word-Doument befinden.

    Sorry, falls ich mich ungeschickt anstelle aber ich mache das hier zum ersten Mal.

    Hast du vielleicht eine Lösung???

    mfg
    Willi
     
  4. Uwe Küstner

    Uwe Küstner
    Expand Collapse
    Member

    Registriert seit:
    23 Februar 2004
    Beiträge:
    178
    Zustimmungen:
    0
    Hallo Willi,

    also bei mir klappt es.

    Probiers mal so:
    Füge ein neues Modul ein. In dieses Modul kommt dann folgendes Makro:
    Code:
    Sub FillTextBoxes()
    Dim oShape As Shape
    Dim I As Long
    I = 1
    For Each oShape In ActiveDocument.Shapes
      If oShape.OLEFormat.Object.Name = "TextBox" & I Then
        oShape.OLEFormat.Object.Value = I
        I = I + 1
      End If
    Next oShape
    End Sub
    In meinem Beispiel heißen die Textboxen 'TextBox1, TextBox2, TextBox3 und
    sind aus der Steuerelemente-Toolbox. Beachte die genaue Schreibweise, Groß-
    /Kleinschreibung wird unterschieden!
     
  5. Willi007

    Willi007
    Expand Collapse
    Guest

    Problembehandlung

    Hallo Uwe,

    es funktioniert bei mir einfach nicht.
    Was mache ich nur falsch???

    Wenn man Textboxen einfach auf ein leeres Dokument einfügt, so bekommen sie ja sowiso die Bezeichnungen: TextBox1 usw, ohne das man sie umbenennen muss. Stimmt doch oder?

    Wenn ich den Code im Debugging-Modus durchlaufe, so fällt mir auf das die Schleife gar nie durchlaufen wird. Also etwas stimmt hier bei mir noch nicht.

    Das Programm bringt zwar keinen Fehler aber die Textboxen bleiben auch leer wie vor der Programmausführung.

    Kann es vielleicht daran liegen, dass ich noch mit Word2000 arbeite???

    Vielen Dank für deine bisherige Geduld!

    mfg
    Willi
     
  6. Uwe Küstner

    Uwe Küstner
    Expand Collapse
    Member

    Registriert seit:
    23 Februar 2004
    Beiträge:
    178
    Zustimmungen:
    0
    Hallo Willi,

    da weiß ich gerade auch nicht mehr weiter. Ich hab Word97, da klappt es.
     
  7. Uwe Küstner

    Uwe Küstner
    Expand Collapse
    Member

    Registriert seit:
    23 Februar 2004
    Beiträge:
    178
    Zustimmungen:
    0
    Hallo Willi,

    hab jetzt daheim das mal in Word 2002 getestet - das gleiche Verhalten
    wie bei Dir. Hab dann Shape(s) durch InlineShape(s) ersetzt und siehe
    da, es läuft. Frag mich nicht nach dem Unterschied, ich weiß es nicht.
    Hab mit Word eigentlich nichts am Hut. Bin eben nur versehentlich in
    diesen Thread geschlittert, weil ich annahm, es geht um Excel.
    Aber Hauptsache, es läuft, egal warum! :)

    Code:
    Sub FillTextBoxes()
    Dim oShape As InlineShape
    Dim I As Long
    I = 1
    For Each oShape In ActiveDocument.InlineShapes
      If oShape.OLEFormat.Object.Name = "TextBox" & I Then
        oShape.OLEFormat.Object.Value = I
        I = I + 1
      End If
    Next oShape
    End Sub
     
  8. Willi007

    Willi007
    Expand Collapse
    Guest

    Super!

    Wow vielen Dank!

    Ich dachte schon...

    Danke das du dir so viel Mühe gegeben hast!

    Leider hab ich schon wieder ein anderes Problem :(((

    Ich werde gleich einen neuen Thread eröffnen. Vielleicht weisst du auch hier eine Lösung ;-)

    mfg
    Willi
     
Die Seite wird geladen...

Diese Seite empfehlen