Per Makro/VBA Zwischenablage analysieren+einfügen
16.10.2013 20:23:25
UliBrenn
Ich habe ein Formular mit Textboxen angefertigt. Die Daten sollen darin erfasst werden und anschließend in einen Sheet übergeben werden.
Das Erfassen wäre weniger nervig, wenn mit der Zwischenablage (clipboard) arbeiten könnte. Dazu habe ich zwei Ideen. Ich würde gerne beide umsetzen.
Zur Verdeutlichung und Unterstützung bei der Lösung habe ich eine Beispieldatei angefertigt: https://www.herber.de/bbs/user/87676.xlsm
Die erste Idee ist folgende:
1. Der/Die User startet das Eingabe-Formular
2. Der Zwischenspeicher wird geleert
3. Bei geöffneten Formular geht der User in einer andere Anwendung (Word) und kopiert Daten in die Zwischenablage
4. Der Benutzer wechselt zum Formular (über Windows Menüleiste) und aktiviert damit die Bearbeitung/Fenster wieder
5. Das Makro/Formular erkennt dies und startet eine Prozedur, die folgenden Schritte beinhaltet (Optional start mit einer Schaltfläche). Das Makro läuft wie folgt:
a. Ist Zwischenspeicher gefüllt?
b. Wenn ja, dann holt sich das Makro den Wert (z.B. als String)
c. Es startet eine Analyse anhand von der Länge oder Platzhaltern (z.B. If then , Case), wie der Aufbau des Strings ist und ordnet die Daten so einer Textbox zu
d. Die Daten werden anschließend mittels einer InputBox als dem Vorschlagswert aus der Zwischenablage bestätigt und als Wert für die Textbox vorgeschlagen
e. Drückt der Benutzer Abbrechen, bleibt der Wert in der Zwischenablage
f. Wird mit OK bestätigt, wird der Wert eingefügt und die Zwischenablage geleert.
Die Zuordnung der Werte sollte über das Format gesteuert werden:
Zum Beispiel:
Wenn Nummerische ( If Is Numeric then )dann prüfe, ob 1 bis 3 (# oder ## oder ###) oder 5 Stellen (#####) dann PLZ. Wenn 1-3 nummerische Stellen dann als Vorschlagswert InputBox Hausnummer, wenn 5 Stellen dann InputBox Vorschlagswert als PLZ. Wenn nicht nummerisch dann Vorschlagswert Inputbox Strasse.
Für die Analyse würde ich gerne Platzhalter verwenden oder Length. Alles andere kenne ich nicht. Bin aber sehr lernwillig.
Meine zweite Idee:
Auf dem Formular sind Schaltflächen, die den Inhalt der Zwischenablage in eine jeweilige Textbox einfügt (Siehe Beispieldatei).
Über google habe ich ein paar Beispiele gefunden, die mit aber nicht wirklich weiterhelfen (s.u.). Die Zwischenablage muss wohl als New Dataobjekt gedimmt werden. Eine Konstante holt sich dann über gettxtfromclipboard den String? Hat bei mir alles nicht geholfen, weshalb ich auch kein Makro-Vorschlag mitposten kann.
http://msdn.microsoft.com/de-de/library/system.windows.forms.textboxbase.paste%28v=vs.80%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-4
Wäre toll, wenn mir jemand helfen könnte! Gerne auch mit abgewandelten kreativen Ideen! Danke!
Viele Grüße!
U.