Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1332to1336
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per Makro/VBA Zwischenablage analysieren+einfügen

Per Makro/VBA Zwischenablage analysieren+einfügen
16.10.2013 20:23:25
UliBrenn
Hallo zusammen!
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.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per Makro/VBA Zwischenablage analysieren+einfügen
16.10.2013 22:25:30
Martin
Hallo UliBrenn,
im Grunde sollte das alles umsetzbar sein. Punkt 5 ist ohne CommandButton nicht so einfach lösbar, eventuell mit dem MouseMove-Ereignis könnte man es ohne CommandButton realisieren. Habe gerade nicht viel Zeit, aber als Ansatz:
Mit folgendem Code holst du die Daten aus der Zwischenablage:
Sub AusZwischenablage()
Dim oData As New DataObject
On Error Resume Next ' falls kein Textformat
oData.GetFromClipboard
Debug.Print oData.GetText
End Sub
Mit Len kannst du die Textlänge abfragen, mit IsNumeric kannst du eine Prüfung auf Zahlen vornehmen.
Viele Grüße
Martin

Anzeige
AW: Per Makro/VBA Zwischenablage analysieren+einfügen
17.10.2013 20:02:33
UliBrenn
Hallo Martin!
Hab vielen Dank!
Du hast mich auf die richtige Spur gebracht!
Dim objDataObject As DataObject
Dim zw As String
Set objDataObject = New DataObject
objDataObject.GetFromClipboard
zw = objDataObject.GetText
' MsgBox zw
Set objDataObject = Nothing

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige