Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: SendKey einfügen

SendKey einfügen
12.02.2015 22:10:32
Thomas
Hallo!
Ich benötige bitte eure Hilfe zu folgendem Problem.
Mit der SendKey Methode steuere ich ein anderes Programm.
Es soll ein Wert aus dem Programm kopiert werden und dann in eine TextBox kopiert werden. Das Textfeld wird also mit der SendKey-Methode angesteuert. Der Wert wird auch kopiert mit Application.SendKeys "^{c}". Auch der Curser wird gesetzt mit
Me.TextBox1.SetFocus. Aber Application.SendKeys "^{v}", also das Einfügen des kopierten Werts in die Textbox1 wird nicht ausgeführt. Der Wert befindet sich aber
in der Zwischenablage. Was kann man tun?
Vielen Dank!
Private Sub CommandButton1_Click()
AppActivate "ABC", True
Application.SendKeys "{F3}"
Application.SendKeys "%{s}"
Application.SendKeys "+{Tab}"
Application.SendKeys "^{c}" 'kopieren
Me.TextBox1.SetFocus 'Curser auf TextBox setzen
Application.SendKeys "^{v}" 'in TextBox1 soll reinkopiert werden. Geht aber nicht.
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SendKey einfügen
12.02.2015 22:37:07
mumpel
Hallo!
Stichwort: ClipBoard.GetFromClipboard
Gruß, René

AW: SendKey einfügen
12.02.2015 22:52:08
Thomas
Hallo Rene!
Kannst du mir bitte weiter auf die Sprünge helfen!
Ich ersetze also Application.SendKeys "^{v}" einfach mit ClipBoard.GetFromClipboard ?
Gruß
Thomas

Anzeige
AW: SendKey einfügen
12.02.2015 23:05:07
Thomas
Hallo Rene!
muss ich so ergänzen?
Dim objDataObject As DataObject
Set objDataObject = New DataObject
objDataObject.GetFromClipboard
TextBox1.Text = objDataObject.GetText
Set objDataObject = Nothing
gruß
Thomas

AW: SendKey einfügen
12.02.2015 23:56:08
mumpel
Einen Verweis auf die "Microsoft Forms 2.0 Object Library" setzen, falls noch nicht geschehen.
Sub test()
Dim Clipboard As New DataObject

 Clipboard.GetFromClipboard
 MsgBox Clipboard.GetText
End Sub

VBA/HTML - CodeConverter für Office-Foren, AddIn für Office 2002-2013 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:mumpel

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: SendKey einfügen
14.02.2015 11:09:29
Thomas
Hallo mumpel!
Danke für den Hinweis. Das einfügen in die TextBox funktioniert jetzt.
Nun habe ich noch ein kleines Anliegen. Wieder eine fremde Anwendung ansteuern.
Mit der PutInClipboard wird ein Text kopiert und wenn das Feld der Fremden Datenbank angesteuert wird
mit SendKey % v auch eingefügt. Nach dem Einfügen geht er in ein neues Feld der fremden Anwendung.
Dort soll dann eine Zahl eingefügt werden. Geht aber leider nicht mehr. PutInClipboard (kopieren) wird
hier schon einmal verwendet. Wie kann ich ein zweites mal was einfügen?

Anzeige
AW: SendKey einfügen
15.02.2015 01:53:32
mumpel
SendKeys ist dafür die falsche Methode. Versuch es mal mit WinScript oder RegEx.

AW: SendKey einfügen
16.02.2015 19:00:37
Thomas
Private Sub cmdEinfügen_Click()
TestText = "Bla bla bla"
Me.txtblablatext.SetFocus
txtblablatext.Text = TestText
Dim objDataObject As DataObject
Set objDataObject = New DataObject
objDataObject.SetText txtblablatext.Text
objDataObject.PutInClipboard
Set objDataObject = Nothing
AppActivate "Programm", True
Application.SendKeys "%{i}"
Application.SendKeys "{Up}"
Application.SendKeys "{Tab}"
Application.SendKeys "{Up}"
Application.SendKeys "^{v}" ' bla bla Text wird ins Programm eingefügt
Application.SendKeys "+{Tab}" 'Curser befindet sich im neuen Feld des Programms. Hier sollte  _
noch ein Text eingefügt werden.
Wie kann das nun funktionieren?
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

SendKey in VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (deinWorkbookName)" und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton1_Click()
        AppActivate "ABC", True
        Application.SendKeys "{F3}"
        Application.SendKeys "%{s}"
        Application.SendKeys "+{Tab}"
        Application.SendKeys "^{c}" ' Kopiere den Wert
        Me.TextBox1.SetFocus ' Setze den Cursor auf TextBox
        Application.SendKeys "^{v}" ' Füge den Wert in TextBox1 ein
    End Sub
  4. Microsoft Forms 2.0 Object Library aktivieren: Gehe zu Extras > Verweise und aktiviere die Bibliothek, um Clipboard-Funktionen nutzen zu können.

  5. Clipboard verwenden: Ersetze Application.SendKeys "^{v}" durch den folgenden Code, um den Wert direkt aus der Zwischenablage zu ziehen:

    Dim objDataObject As DataObject
    Set objDataObject = New DataObject
    objDataObject.GetFromClipboard
    TextBox1.Text = objDataObject.GetText
    Set objDataObject = Nothing

Häufige Fehler und Lösungen

  • SendKeys funktioniert nicht: Wenn Application.SendKeys "^{v}" nicht funktioniert, stelle sicher, dass das Zielprogramm den Fokus hat. Nutze AppActivate, um sicherzustellen, dass das richtige Fenster aktiv ist.

  • Clipboard funktioniert nicht: Wenn du GetFromClipboard verwendest, stelle sicher, dass du die Microsoft Forms 2.0 Object Library aktiviert hast.

  • TextBox bleibt leer: Überprüfe, ob der Text wirklich in der Zwischenablage ist, bevor du versuchst, ihn einzufügen.


Alternative Methoden

  • WinScript: Eine alternative Möglichkeit, um Tastenanschläge zu simulieren, ist die Verwendung von Windows Scripting Host. Hierbei kannst du Skripte erstellen, die Aktionen im Betriebssystem automatisieren.

  • RegEx: Wenn du komplexere Textmanipulationen durchführen möchtest, könnten reguläre Ausdrücke nützlich sein.


Praktische Beispiele

Beispiel 1: Text aus einem anderen Programm kopieren und in Excel einfügen

Private Sub CommandButton1_Click()
    AppActivate "Das andere Programm"
    Application.SendKeys "^{c}" ' Kopiere den Text
    Me.TextBox1.SetFocus
    Application.SendKeys "^{v}" ' Füge den Text ein
End Sub

Beispiel 2: Mehrere Werte aus der Zwischenablage verwalten

Private Sub cmdEinfügen_Click()
    Dim objDataObject As DataObject
    Set objDataObject = New DataObject
    objDataObject.GetFromClipboard
    Me.TextBox1.Text = objDataObject.GetText
    Set objDataObject = Nothing
End Sub

Tipps für Profis

  • Verwende Application.SendKeys mit Bedacht: Diese Methode ist nicht immer zuverlässig, da sie von der Reihenfolge der Fenster abhängt. Teste gründlich!

  • Debugging: Verwende MsgBox oder Debug.Print, um den Status der Zwischenablage und die Werte in den TextBoxen zu überprüfen.

  • Sichere Eingaben: Verwende Validierungsprüfungen, um sicherzustellen, dass die Werte in der Zwischenablage tatsächlich kopiert wurden, bevor du sie einfügst.


FAQ: Häufige Fragen

1. Warum funktioniert Application.SendKeys manchmal nicht?
Application.SendKeys kann unzuverlässig sein, wenn das Zielprogramm nicht den Fokus hat. Stelle sicher, dass das Programm aktiv ist.

2. Wie kann ich Text in die Zwischenablage kopieren?
Verwende die DataObject-Klasse. Hier ein Beispiel:

Dim objDataObject As DataObject
Set objDataObject = New DataObject
objDataObject.SetText "Dein Text"
objDataObject.PutInClipboard
Set objDataObject = Nothing

3. Was ist der Unterschied zwischen GetFromClipboard und SendKeys?
GetFromClipboard ruft den Text direkt aus der Zwischenablage ab, während SendKeys Tastenanschläge simuliert und dabei auf den Fokus des Fensters angewiesen ist.

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