Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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.

Anzeige

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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zwischenablage in Excel mit VBA analysieren und einfügen


Schritt-für-Schritt-Anleitung

  1. Formular erstellen: Erstelle ein Excel-Formular mit Textboxen, um Daten zu erfassen.
  2. Zwischenablage leeren: Nutze den folgenden VBA-Code, um die Zwischenablage zu leeren:
    Dim oData As New DataObject
    oData.SetText ""
    oData.PutInClipboard
  3. Daten kopieren: Wechsle zu einer anderen Anwendung (z.B. Word) und kopiere die gewünschten Daten in die Zwischenablage.
  4. Zurück zum Formular: Aktiviere das Excel-Formular, um die Daten weiterzuverarbeiten.
  5. Daten auslesen: Verwende den folgenden Code, um die Daten aus der Zwischenablage zu lesen:
    Dim objDataObject As New DataObject
    Dim zw As String
    On Error Resume Next
    objDataObject.GetFromClipboard
    zw = objDataObject.GetText
    Set objDataObject = Nothing
  6. Daten analysieren: Analysiere die ausgelesenen Daten mit Len und IsNumeric, um die Daten korrekt den Textboxen zuzuordnen.
  7. Wert einfügen: Zeige eine InputBox an, um den Nutzer zu fragen, ob der Wert eingefügt werden soll. Bei Bestätigung wird der Wert in die Textbox eingefügt.

Häufige Fehler und Lösungen

  • Fehler beim Auslesen der Zwischenablage: Stelle sicher, dass der Clipboard-Inhalt im Textformat vorliegt. Verwende On Error Resume Next, um Fehler zu ignorieren.
  • Textbox bleibt leer: Überprüfe, ob die Daten in der Zwischenablage tatsächlich vorhanden sind. Möglicherweise wurde der Inhalt nicht korrekt kopiert.
  • Schnellere Ausführung: Verwende ein CommandButton, um den Prozess zu starten, anstatt auf das MouseMove-Ereignis zu setzen.

Alternative Methoden

  • Direktes Einfügen: Anstatt die Zwischenablage zu analysieren, kannst du auch direkt mit ActiveSheet.Paste die Daten einfügen, wenn du sicher bist, dass der Clipboard-Inhalt korrekt ist.
  • Verwendung von Google Zwischenablage: Wenn du oft zwischen verschiedenen Geräten wechselst, kann die Google Zwischenablage eine praktische Lösung sein, um Inhalte zu synchronisieren.

Praktische Beispiele

  • Beispiel für eine InputBox:

    Dim userResponse As VbMsgBoxResult
    userResponse = MsgBox("Möchten Sie den Wert '" & zw & "' einfügen?", vbYesNo)
    If userResponse = vbYes Then
       ' Wert in die Textbox einfügen
       TextBox1.Value = zw
    End If
  • Datenanalyse:

    If IsNumeric(zw) Then
       If Len(zw) = 5 Then
           ' PLZ
       ElseIf Len(zw) <= 3 Then
           ' Hausnummer
       End If
    Else
       ' Straßenname
    End If

Tipps für Profis

  • Nutze Debug.Print, um den Inhalt der Zwischenablage während der Entwicklung zu überprüfen. Das hilft, Fehler schneller zu identifizieren.
  • Experimentiere mit Platzhaltern in deiner Analyse, um flexible Datenzuordnungen zu ermöglichen.
  • Halte deinen Code modular, indem du verschiedene Funktionen für die Datenverarbeitung und die Benutzerinteraktion erstellst.

FAQ: Häufige Fragen

1. Wo findet man die Zwischenablage in Excel?
Die Zwischenablage ist nicht direkt sichtbar, sie wird jedoch verwendet, wenn du Daten kopierst oder einfügst. Du kannst den Inhalt über VBA auslesen.

2. Wie kann ich sicherstellen, dass der Inhalt der Zwischenablage im richtigen Format vorliegt?
Verwende den On Error Resume Next Befehl, um zu prüfen, ob der Clipboard-Inhalt im Textformat vorhanden ist, und handle entsprechende Fehler ab.

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