Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Textfeld auslesen

Textfeld auslesen
15.06.2013 17:32:11
Dani
Hallo zusammen
Ich habe folgendes Problem:
In etwa 150 Dateien ist immer je ein Textfeld (Textfeld 2) mit dem Namen und der Adresse. Nun möchte ich dieses Textfeld auslesen und den Inhalt in die darunterliegenden Zellen schreiben.
Zur Vereinfachung habe ich mal eine Vorlagendatei beigefügt.
https://www.herber.de/bbs/user/85843.xlsx
Tabelle 1 entspricht dem Original und so wie in Tabelle 2 hätte ich es nach dem auslesen des Textfeldes gern.
Um das ganze für mich etwas zu vereinfachen wäre es noch Super, wenn das ganze über einen Shortcut ansprechbar wäre.
Danke schon mal für eure Hilfe
Gruess Dani

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfeld auslesen
15.06.2013 21:10:01
Beverly
Hi Dani,
wenn das Textfeld in allen zu bearbeitenden Tabellenblättern "Textfeld 2" heißt und absolut genau so aufgebaut ist wie im Beispiel (2 Zeilenumbrüche zwischen Anrede und Namen und Namen und Straße sowie mehreren Leerzeichen zwischen Straße und PLZ/Ort, dann kannst du das mit folgendem Code machen:
Sub TextFeld()
Dim strInhalt
With ActiveSheet.Shapes("Textfeld 2")
strInhalt = Split(.OLEFormat.Object.Text, Chr(10))
End With
Range("H7").Resize(UBound(strInhalt) + 1, 1) = Application.Transpose(strInhalt)
Range("H10") = LTrim(Right(Range("H9"), InStrRev(Range("H9"), " ") - 6))
Range("H9") = RTrim(Application.Substitute(Range("H9"), Range("H10"), ""))
End Sub
Schreibe den Code in ein allgemeines Modul in deine PERSONAL.xlsb und rufe es im Register Entwicklertools -&gt Befehlsgruppe: Code -&gt Schalter: Makros auf.
Achtung: im Code ist keine!!! Fehlerbehandlung enthalten, ob das Textfeld 2 wirklich vorhanden ist und ob der Text tatsächlich den o.g. Vorgaben entspricht - sollte das nicht der Fall sein, löst der Code eine Fehlermeldung aus.


Anzeige
AW: Textfeld auslesen
17.06.2013 11:10:38
Dani
Hallo Karin
Vielen Dank für deine Hilfe. Dein Code arbeitet super, jedoch wenn die Adresse länger ist, dann _ trennt er am "falschen" Ort. Ich habe den Code mal wie folgt abgeändert

Sub TextFeld()
Dim strInhalt
With ActiveSheet.Shapes("Textfeld 2")
strInhalt = Split(.OLEFormat.Object.Text, Chr(10))
End With
Range("H7").Resize(UBound(strInhalt) + 1, 1) = Application.Transpose(strInhalt)
Range("H10") = LTrim(Right(Range("H9"), InStrRev(Range("H9"), " ") - 20))
Range("H9") = RTrim(Application.Substitute(Range("H9"), Range("H10"), ""))
End Sub

Dies führt jedoch zu einer Fehlermeldung und zwar genau dann wenn ich hier
Range("H10") = LTrim(Right(Range("H9"), InStrRev(Range("H9"), " ") - 20))

den Wert höher als -14 setze. Es gibt jedoch auch Adressen mit mehr als 15 Zeichen und dann kommt erst die Hausnummer.
Wie muss ich den Code abändern, damit es trotzdem klappt?
Danke schon mal im Voraus
Gruss Dani

Anzeige
AW: Textfeld auslesen
17.06.2013 11:22:54
Beverly
Hi Dani,
ändere diese Zeile wie folgt:
   Range("H10") = LTrim(Right(Range("H9"), Len(Range("H9")) - InStrRev(Range("H9"), "  ")))


Anzeige
AW: Textfeld auslesen
17.06.2013 11:37:37
Dani
Sali Karin
Danke für die schnelle Antwort. Habs gerade ausprobiert. Leider schreibt er jetzt die Adresse in Zelle H10 anstelle H9 und die PLZ und Ort (H10) bleiben komplett weg :-(
Gruess Dani

AW: Textfeld auslesen
17.06.2013 11:43:14
Beverly
Hi Dani,
kann ich leider nicht nachvollziehen. Da musst du schon mal ein betreffendes Beispiel hochladen.


Anzeige
AW: Textfeld auslesen
17.06.2013 12:00:36
Beverly
Hi Dani,
in meinem ersten Antwortbeitrag hatte ich geschrieben, dass der Code nur funktioneren kann, wenn alle Textfelder identisch aufgebaut sind - so wie in deinem ersten hochgeladenen Beispiel: 2 Zeilenumbrüche zwischen Anrede und Namen und Namen und Straße sowie mehreren Leerzeichen zwischen Straße und PLZ/Ort.
Das ist in dem jetzt hochgeladenen Beispiel nicht mehr der Fall - zwischen Adresse und PLZ/Ort sind jetzt keine Leerzeichen sondern ebenfalls ein Zeilenumbruch. Es ist also kein Wunder, dass der Code nicht mehr das macht was er mit deinem andern Textfeld korrekt gemacht hat. Folglich stellt sich die ganz konkrete Frage: wie sind deine Textfelder denn nun tasächlich aufgebaut? Gibt es mehrere Varianten und wenn ja - welche noch, außer den bisherigen?


Anzeige
AW: Textfeld auslesen
20.06.2013 13:57:15
Dani
Hallo Karin
Sorry das war mein Fehler :-(
Natürlich klappt der Code mit der neuen Änderung perfekt. Habe selbst am Textfeld "herumgespielt" und deshalb waren die Leerzeichen und der neue Zeilenumbruch drin. Habe es mit der Originaldatei nochmals probiert und alles ist perfekt.
Danke nochmals für deine Hilfe und deine Nachsicht ;-)
Gruess Dani
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Textfeld auslesen in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne die Datei, in der du das Textfeld auslesen möchtest.

  2. Füge das VBA-Modul hinzu:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Wähle im Menü Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den VBA-Code in das Modul:

    Sub TextFeld()
       Dim strInhalt
       With ActiveSheet.Shapes("Textfeld 2")
           strInhalt = Split(.OLEFormat.Object.Text, Chr(10))
       End With
       Range("H7").Resize(UBound(strInhalt) + 1, 1) = Application.Transpose(strInhalt)
       Range("H10") = LTrim(Right(Range("H9"), InStrRev(Range("H9"), " ") - 6))
       Range("H9") = RTrim(Application.Substitute(Range("H9"), Range("H10"), ""))
    End Sub
  4. Führe den Code aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle TextFeld und klicke auf Ausführen.
  5. Erstelle einen Shortcut:

    • Du kannst einen Shortcut für den Zugriff auf das Makro erstellen, indem du das Makro im Menü Entwicklertools und dann Makros auswählst.

Häufige Fehler und Lösungen

  • Fehlermeldung beim Ausführen des Codes:

    • Stelle sicher, dass das Textfeld tatsächlich "Textfeld 2" heißt. Andernfalls ändere den Namen im Code.
  • Text wird nicht korrekt aufgeteilt:

    • Überprüfe, ob die Struktur des Textfeldes mit den Erwartungen übereinstimmt (z.B. Zeilenumbrüche, Leerzeichen).
  • Inhalte werden in falsche Zellen geschrieben:

    • Vergewissere dich, dass die Zellen H9 und H10 korrekt referenziert sind. Anpassungen im Code können nötig sein, wenn die Struktur der Adressen variiert.

Alternative Methoden

  1. Excel VBA Textfeld ansprechen:

    • Du kannst auch andere Textfelder auslesen, indem du den Namen im With-Block änderst.
  2. HTML Eingabefeld auslesen:

    • Wenn du mit HTML arbeitest, kannst du Eingabefelder über ein VBA-Skript auslesen, indem du die entsprechenden DOM-Elemente ansteuerst.
  3. Word VBA Textfeld ansprechen:

    • Ähnlich wie in Excel kannst du in Word VBA verwenden, um Textfelder auszulesen, indem du die Shapes-Sammlung nutzt.

Praktische Beispiele

Hier ist ein Beispiel, wie du den Code anpassen kannst, um eine Fehlermeldung einzufügen, falls das Textfeld nicht gefunden wird:

Sub TextFeld()
    Dim strInhalt
    On Error Resume Next
    With ActiveSheet.Shapes("Textfeld 2")
        If Err.Number <> 0 Then
            MsgBox "Textfeld 2 nicht gefunden!", vbCritical
            Exit Sub
        End If
        strInhalt = Split(.OLEFormat.Object.Text, Chr(10))
    End With
    ' Der Rest des Codes bleibt unverändert
End Sub

Tipps für Profis

  • Fehlerbehandlung einfügen: Achte darauf, dass dein Code robust ist und Fehler behandelt. Verwende On Error-Anweisungen, um unerwartete Ausgaben zu vermeiden.

  • Code optimieren: Überlege dir, ob du den Code modularer gestalten kannst, indem du Funktionen erstellst, die spezifische Aufgaben übernehmen.

  • Dokumentation: Kommentiere deinen Code, damit du und andere später verstehen, was jeder Teil des Codes bewirken soll.


FAQ: Häufige Fragen

1. Wie kann ich den Namen des Textfeldes ändern?
Du kannst den Namen des Textfeldes direkt in Excel ändern, indem du es auswählst und im Formatierungsbereich den Namen anpasst.

2. Funktioniert der Code in allen Excel-Versionen?
Der bereitgestellte VBA-Code sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren. Achte jedoch darauf, dass die Struktur des Textfeldes der Beschreibung entspricht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige