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

Sendkeys Strg-V geht nicht mehr

Forumthread: Sendkeys Strg-V geht nicht mehr

Sendkeys Strg-V geht nicht mehr
13.03.2013 12:25:59
Werner
Hallo zusammen!
Unter Office-XP lief das hier wunderbar:
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate "S1 - IVS" '<- fremde Anwendung
Application.Wait TimeSerial(Hour(Now()), _
Minute(Now()), Second(Now()) + 2)
SendKeys "^(V)"
SendKeys "{ENTER}"
Seit ich Office 2010 und Win7 habe geht SendKeys "^(V)" nicht mehr?
Ich habe nach ewiger Suche keine Lösung finden können.
Bitte um Hilfe.
Gruß und Danke
Werner

Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 12:32:30
Hajo_Zi
Hallo werner,
ich habe folgenden Code getestet.
Sub Testd()
Range("A1:A13").Copy
Range("C2").Select
SendKeys "^v"
End Sub
img src="http://www.hajo-excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel">

Anzeige
AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 12:38:50
Werner
Hallo
Danke für das Script.
Aber es tut sich nichts.
Von Hand geht Strg-v - mit dem Code kommt aber nicht raus.
Gruß
Werner

AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 12:42:08
Martin
Hallo Werner,
und sitzt der Focus nach dem Wechsel in die fremde Anwendung auch im richtigen Feld? Lass den Code noch mal ohne SendKeys "{ENTER}" durchlaufen und drücke anschließend manuell Strg+V!
Viele Grüße
Martin

Anzeige
AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 12:47:37
Werner
Der Focus sitzt auf der fremden Anwendung und Strg-V (manuell) geht auch.
Gruß
Werner

AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 12:49:26
Werner
Habe gerade nur ein {TAB} geschickt und die fremde Anwendung wird in den Vollbildmodus gesetzt?!

AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 12:40:00
Martin
Hallo Werner,
wenn die bei Strg+V nichts passiert, befindet sich vielleicht nichts in der Zwischenablage?! Der Focus wird aber auf die fremde Anwendung gesetzt und SendKeys "{ENTER}" geht auch noch?
Viele Grüße
Martin

Anzeige
AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 13:16:01
Martin
Hallo Werner,
probiere den Code mal bitte so:
    AppActivate ("S1 - IVS"), True '
Viele Grüße
Martin

AW: Sendkeys Strg-V geht nicht mehr
13.03.2013 13:29:46
Werner
Habe ich probiert - gleiches Ergebnis.
Manuell kann ich die Daten aber wieder einfügen.
Gruß
Werner

Anzeige
...noch ein Versuch
13.03.2013 14:03:03
Martin
Hallo Werner,
ich habe noch zwei kleine Änderungen vorgenommen:
1. Die Klammern um das V entfernt
2. Das v ist nun klein
Teste bitte noch einmal:
    AppActivate ("S1 - IVS"), True '
Viele Grüße
Martin

AW: ...noch ein Versuch
13.03.2013 14:06:29
Werner
Auch das hilft leider nicht.
Fehlt vielleicht irgendwie ein Verweis oder so?
Gruß
Werner

Anzeige
AW: ...noch ein Versuch
13.03.2013 14:24:02
Martin
Hallo Werner,
ehrlich gesagt habe ich jetzt auch keine Idee mehr. Du kannst ja mal noch diesen Code testen:
    AppActivate ("S1 - IVS"), True '
Viele Grüße
Martin

AW: ...noch ein Versuch
13.03.2013 15:03:01
Werner
Schade
Auch das ist nicht die Lösung.
Gruß
Werner

Anzeige
AW: ...noch ein Versuch
15.03.2013 09:43:59
Tino
Hallo,
kannst mal so versuchen.
kommt als Code in Modul1
Option Explicit 
 
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
 
Sub Beispiel() 
Dim intTimeOut% 
intTimeOut = 2 'Sekunden 
On Error Resume Next 
 
intTimeOut = intTimeOut * 100 
Do 
    Err.Clear 
    AppActivate "S1 - IVS", True 
    intTimeOut = intTimeOut - 100 
    Sleep 100 
    DoEvents 
Loop Until Err.Number = 0 Or intTimeOut = 0 
 
If Err.Number <> 0 And intTimeOut = 0 Then 
    MsgBox "Anwendung nicht aktiviert!" 
Else 
    Send_Key "v", VK_CONTROL 
    Send_Key "", VK_RETURN 
End If 
End Sub 
kommt als Code in Modul2
Option Explicit 
 
Private Declare Sub keybd_event Lib "user32" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long) 
 
Private Declare Function MapVirtualKey Lib "user32" _
  Alias "MapVirtualKeyA" ( _
  ByVal wCode As Long, _
  ByVal wMapType As Long) As Long 
   
Private Const KEYEVENTF_KEYUP = &H2 
Private Const KEYEVENTF_EXTENDEDKEY = &H1 
 
Enum KeyCode 
    VK_CONTROL = &H11 
    VK_RETURN = &HD 
End Enum 
Sub Send_Key(Key$, Optional KCode As KeyCode = 0) 
Dim intKey%, nScan&, nExtended& 
If Key <> "" Then intKey = Asc(UCase(Key)) 
 
If KCode <> 0 Then keybd_event KCode, 0, 0, 0 'Shift drücken 
    If Key <> "" Then 
        nScan = MapVirtualKey(intKey, 2) 
        If nScan = 0 Then nExtended = KEYEVENTF_EXTENDEDKEY 
        keybd_event intKey, nScan, nExtended, 0 
        keybd_event intKey, nScan, KEYEVENTF_KEYUP Or nExtended, 0 
    End If 
If KCode <> 0 Then keybd_event KCode, 0, KEYEVENTF_KEYUP, 0 'Shift loslassen 
End Sub 
 
Gruß Tino

Anzeige
AW: ...noch ein Versuch
16.03.2013 11:28:32
Tino
Hallo,
mach aus
intTimeOut = intTimeOut - 100
noch
intTimeOut = intTimeOut - 10
Dann passt es auch mit der Zeit.
Gruß Tino

AW: ...noch ein Versuch
18.03.2013 09:56:53
Werner
Hallo Tino!
Ich kam erst heute dazu den Code zu testen.
In der fremden Anwendung erscheint jetzt das Zeichen "<" gefolgt von einem Leerschritt.
Wenn ich dann händisch Strg-V drücke erscheinen die Daten die eigentlich da hin sollen.
Sehr seltsam.
Wir wurden kürzlich von Win-XP und Office 2003 auf Win7 und Office 2010 umgestellt.
Kann es damit zusammen hängen?
Gruß und Danke!
Werner

Anzeige
jetzt weiß ich ach nicht weiter oT.
18.03.2013 16:14:25
Tino
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Sendkeys Strg-V funktioniert nicht mehr in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne die VBA-Umgebung in Excel. Das kannst Du tun, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu:

    • Rechtsklicke auf "VBAProject (deineDatei.xlsx)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.AppActivate "S1 - IVS"   ' Fremde Anwendung aktivieren
    Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2)
    SendKeys "^v"   ' Strg + V senden
    SendKeys "{ENTER}"   ' Enter-Taste senden
  4. Führe das Skript aus. Stelle sicher, dass der Fokus auf der richtigen Anwendung ist, wenn der Code läuft.


Häufige Fehler und Lösungen

  • Strg + V funktioniert nicht: Überprüfe, ob etwas in der Zwischenablage ist. Manchmal kann es sein, dass ctrl c nicht richtig funktioniert hat.
  • Falscher Fokus: Stelle sicher, dass die Anwendung, in die Du einfügen möchtest, aktiv ist. Nutze AppActivate um die Anwendung zu aktivieren.
  • SendKeys funktioniert nicht: Manchmal kann es helfen, die Anwendung kurz warten zu lassen. Füge Application.Wait ein, um sicherzustellen, dass die Anwendung bereit ist.

Alternative Methoden

Wenn SendKeys nicht funktioniert, kannst Du die API-Funktionen verwenden. Hier ist ein Beispiel, wie Du das machen kannst:

Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)

Const VK_CONTROL = &H11
Const VK_V = &H56
Const KEYEVENTF_KEYUP = &H2

Sub SendCtrlV()
    keybd_event VK_CONTROL, 0, 0, 0
    keybd_event VK_V, 0, 0, 0
    keybd_event VK_V, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
End Sub

Praktische Beispiele

Hier sind ein paar Code-Beispiele, die Dir helfen können:

  1. Einfügen von Werten:

    Sub CopyPasteExample()
       Range("A1:A10").Copy
       AppActivate "S1 - IVS"
       SendKeys "^v"
    End Sub
  2. Warten vor dem Einfügen:

    Sub DelayedPaste()
       Application.Wait (Now + TimeValue("0:00:02")) ' 2 Sekunden warten
       SendKeys "^v" 
    End Sub

Tipps für Profis

  • Verwende Sleep für besseres Timing: Du kannst die Sleep-Funktion nutzen, um Verzögerungen einzufügen, bevor Du SendKeys sendest.

    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  • Debugging: Wenn Du Probleme hast, versuche, den Fokus manuell zu setzen und den Code ohne SendKeys "{ENTER}" auszuführen, um zu sehen, ob das manuelle Einfügen funktioniert.


FAQ: Häufige Fragen

1. Warum funktioniert Strg + V nicht? Es könnte sein, dass die Zwischenablage leer ist oder der Fokus nicht richtig gesetzt ist. Überprüfe, ob ctrl c vorher funktioniert hat.

2. Was kann ich tun, wenn SendKeys nicht zuverlässig funktioniert? In diesem Fall kannst Du alternative Methoden wie API-Funktionen verwenden, um Tastenanschläge zu simulieren.

3. Ist dieser Code in allen Excel-Versionen kompatibel? Der Code sollte in Excel VBA ab Version 2003 bis 2010 und darüber hinaus funktionieren, jedoch können spezifische Einstellungen je nach Version variieren.

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