PDA

Vollständige Version anzeigen : Verhalten nach Sendkey


Kimba06
01.07.2015, 12:39
Hallo zusammen,
in einer Excel Anwendung verwende ich folgendes Script:Dim oExcel
Set oExcel = CreateObject("Excel.Application")
with oExcel
.Workbooks.Open "MeineDatei.xlsx"
.sendkeys "%{ }x"
.visible = True
End with
Set oExcel = Nothing
On Error Resume Nextnach Ausführen des Sciptes passiert folgendes:
Datei "MeineDatei.xlsx" öffnet sich rückt in den Vordergrund und wir maximiert. Soweit so gut. Gleichzeitig wird aber der Nummernblock der Tastatur abgeschaltet. Warum? Kann mir das jemand von Euch erklären. Würde gerne wissen warum das so ist.
Gruss Achim

xlph
01.07.2015, 13:04
Hallo,

das dürfte langen:

Workbooks.Open "MeineDatei.xlsx"
Application.WindowState = xlMaximized

Kimba06
01.07.2015, 13:13
Hallo,
leider nicht führt zur Fehlermeldung: Objekt erforderlich Application.
Gruss Achim

LR73
01.07.2015, 14:55
Hallo, probier mal folgendes, dass hat mein Problem mit dem Maximieren gelöst..

Private Sub Workbook_Activate()

If Application.WindowState <> xlMaximized And Application.WindowState <> xlMinimized Then Application.WindowState = xlMaximized 'Excelfenster maximieren
...
end sub

Bei Bedarf (Fenster immer maximiert halten)

Private Sub Workbook_WindowResize(ByVal Wn As Window)
If Application.WindowState <> xlMaximized And Application.WindowState <> xlMinimized Then Application.WindowState = xlMaximized 'Excelfenster maximieren
End Sub

Das Numlockproblem (Schaltet sich nach Sendkeys gern mal aus) habe ich wie folgt versucht zu lösen: (Code in Modul)

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

Private Declare Function GetKeyboardState Lib "user32.dll" ( _
ByRef pbKeyState As KeyboardBytes) As Long

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private pbKeyState As KeyboardBytes

Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_KEYDOWN = &H0

Private Function Get_Value() As Boolean
Call GetKeyboardState(pbKeyState)
Get_Value = pbKeyState.kbByte(vbKeyNumlock) And 1
End Function

Private Sub Set_Value()
Call keybd_event(vbKeyNumlock, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYDOWN, 0)
Call keybd_event(vbKeyNumlock, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
End Sub

Public Sub NumPress()
If Not Get_Value Then Call Set_Value
End Sub


Dann einfach im Code in die Events an passende Stelle CALL Numpress. Mach ich meist beim Aktivieren der Form. Bewirkt, dass der Numlockstatus geprüft wird. Ist dieser aus, wird er aktiviert. Es hilft außerdem, alle nicht wirklich notwendigen Sendkeys aus dem Code zu entfernen.

Viele Grüße
Lars

Kimba06
01.07.2015, 15:08
Hallo Lars,
vielen Dank für Deine Mühe. Aber leider verstehe ich davon so gut wie nichts. So weit gehen meine Kenntnisse nicht. Daher kann ich leider auch nichts von Deiner Antwort umsetzen. Allerdings entnehme ich Deinem Satz Das Numlockproblem (Schaltet sich nach Sendkeys gern mal aus) das dies wohl mein Problem zu sein scheint wo immer es auch her kommt.
Gruss Achim