vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im [email protected] gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im [email protected]
Re: Alternative zur SendKeys-Anweisung 
Autor: NoRoutine
Datum: 23.05.14 22:55

Hallo,
interessant, wie aktuell ein 2002 verfaßter Beitrag auch nach 12 Jahren noch ist.
Für die Veröffentlichung kann ich mich jedenfalls nur bedanken, da ich sonst ziemlich aufgeschmissen gewesen wäre. Funktionsbibliotheken sind für mich terra incognita.
Mein Problem ist, daß ich geschützten Code in Excel-Formularen pflegen muß. Blöd genug, daß in Anwenderdateien überhaupt Code enthalten ist, läßt sich aber nicht vermeiden, da die Formulare auf eine zentrale Datenbasis zugreifen.
Programmieren ist eigentlich eher mein Privatvergnügen, aber mit den Jahren habe ich doch eine Menge Erfahrungen gesammelt, die ich in meinem Job gerne einbringe. So wird Arbeit zu Spaß! Eine ganz neue Herausforderung ist, Anwendungen zu erstellen, die von Kollegen genutzt werden.
Im Wesentlichen arbeite ich mit den Möglichkeiten, die VBA in MS Office zur Verfügung stellt.
Wie eigentlich klar sein dürfte, bin ich an der mangelnden Zuverlässigkeit der Sendkeys-Anweisung gescheitert und bei der Suche nach Alternativen auf die hier veröffentlichte Lösung gestoßen.
Die rudimentäre Funktionalität hat mich gestört. So habe ich mir den Code genauer angesehen und festgestellt, daß die Grundlagen gut abgebildet werden, die erweiterten Funktionen aber nicht umgesetzt sind.
Da ich so nicht damit arbeiten konnte, lag es nahe, die fehlenden Teile zu ergänzen. Das Ergebnis möchte ich Euch nicht vorenthalten und so auch etwas zurückgeben.
Nach ausführlichen Tests gehe ich davon aus, daß die Funktionen wie erwartet arbeiten. Falls jemand Spaß an der Lösung hat und noch Verbesserungspotential entdecken sollte, wäre ich für ein Feedback dankbar.
So, hier kommt der Code. Der Ursprung dürfte klar erkennbar sein.
Die zu sendende Zeichenkette wird in der Variablen sText an SendKeyStr übergeben.

Georg

Option Explicit
 
' Required API-Declarations
Public Declare Sub keybd_event Lib "User32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)                                      ' 
    ' Synthesize Keystroke
 
Private Declare Function VkKeyScan Lib "User32" _
    Alias "VkKeyScanA" ( _
    ByVal cChar As Byte) As Integer                                 ' Translate 
    ' Character into Virtual-Key Code and SHIFT State
 
Private Declare Function MapVirtualKey Lib "User32" _
    Alias "MapVirtualKeyA" ( _
    ByVal wCode As Long, _
    ByVal wMapType As Long) As Long                                 ' Translate 
    ' Virtual-Key Code into Scan Code or Character Value
 
Public Const KEYEVENTF_KEYUP = &H2                                  ' Keystroke 
' Flag for KeyUp
Private Const KEYEVENTF_EXTENDEDKEY = &H1                           ' Keystroke 
' Flag for Extended Key
 
' Virtual KeyCodes
Private Enum eVirtualKeyCode
    VK_BAK = &H8
    VK_TAB = &H9
    VK_CLEAR = &HC
    VK_RETURN = &HD
    VK_SHIFT = &H10
    VK_CONTROL = &H11
    VK_MENU = &H12
    VK_PAUSE = &H13
    VK_CAPITAL = &H14
    VK_ESCAPE = &H1B
    VK_PRIOR = &H21
    VK_NEXT = &H22
    VK_END = &H23
    VK_HOME = &H24
    VK_LEFT = &H25
    VK_UP = &H26
    VK_RIGHT = &H27
    VK_DOWN = &H28
    VK_SELECT = &H29
    VK_SNAPSHOT = &H2C                                              ' Print Key
    VK_INSERT = &H2D
    VK_DELETE = &H2E
    VK_HELP = &H2F
    VK_F1 = &H70
    VK_F2 = &H71
    VK_F3 = &H72
    VK_F4 = &H73
    VK_F5 = &H74
    VK_F6 = &H75
    VK_F7 = &H76
    VK_F8 = &H77
    VK_F9 = &H78
    VK_F10 = &H79
    VK_F11 = &H7A
    VK_F12 = &H7B
    VK_F13 = &H7C
    VK_F14 = &H7D
    VK_F15 = &H7E
    VK_F16 = &H7F
    VK_NUMLOCK = &H90
    VK_SCROLL = &H91
    VK_WIN = &H5B                                                   ' Windows 
    ' Key
    VK_APPS = &H5D                                                  ' Key for 
    ' Context Menu1
End Enum
 
Dim bShift As Boolean, bAlt As Boolean, bCtrl As Boolean            ' Flags for 
' Shift, Alt, Ctrl
Dim bShiftd As Boolean, bAltd As Boolean, bCtrld As Boolean         ' Flags for 
' KEYDOWN State of Control Keys
Dim bRound As Boolean, bCurly As Boolean                            ' Flags for 
' Brackets
Dim SendKeyDebug As Boolean                                         ' Flag for 
' Debugging
Uh, die Beschränkung der Zeilenlänge beeinträchtigt die Lesbarkeit des Codes etwas.

Das muß doch irgendwie gehen!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tipp 542: Alternative zur SendKeys-Anweisung8.842Kartoffel30.06.08 11:38
Re: Alternative zur SendKeys-Anweisung4.844Bazi20.04.10 19:05
Re: Alternative zur SendKeys-Anweisung4.654Andreas M.09.07.11 12:46
Re: Alternative zur SendKeys-Anweisung4.512Andreas M.09.07.11 20:18
Re: Alternative zur SendKeys-Anweisung193Paul Schäfer01.03.22 09:54
Re: Alternative zur SendKeys-Anweisung3.941stev-e8719.09.12 13:37
Re: Alternative zur SendKeys-Anweisung3.309NoRoutine23.05.14 22:55
Re: Alternative zur SendKeys-Anweisung3.084NoRoutine23.05.14 22:57
Re: Alternative zur SendKeys-Anweisung3.050NoRoutine23.05.14 23:00
Re: Alternative zur SendKeys-Anweisung3.069NoRoutine23.05.14 23:03
Re: Alternative zur SendKeys-Anweisung3.109NoRoutine23.05.14 23:04
Re: Alternative zur SendKeys-Anweisung3.254NoRoutine23.05.14 23:04

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2022 [email protected] Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel