Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

AppActivate & Nummernblockphänomen | Herbers Excel-Forum


Betrifft: AppActivate & Nummernblockphänomen von: Mario
Geschrieben am: 28.01.2010 08:13:36

Guten Morgen,

vielleicht hat jemand ja einen Lösungsansatz / Erklärung für folgendes Problem.

Per Shell öffne ich ein Programm. Ist in der Zelle C11 ein Wert gesetzt, schließe ich das Programm direkt wieder per Sendkey (Alt+F4).

Hier der Auszug aus meinem code:

....

Status = Shell("C:\Programm.exe", 1)

If ActiveSheet.Range("C11").Value = True Then

AppActivate Status
SendKeys "%{F4}", True

End if

Gehen wir von True aus - die Bedingung ist also erfüllt und Programm.exe soll direkt wieder geschlossen werden.

Frage 1) wieso schaltet sich dann der Nummernblock nach Ausführen des Codes manchmal ein bzw. aus?

Frage 2) Excel ist deaktiviert und lässt sich nur per Mausklick wieder aktivieren. Kann ich die Task-Id der Arbeitsmappe welche meinen Code enthält irgendwie auslesen und dann per AppActivate wieder aktivieren? AppActivate ("Microsoft Excel") und ähnliche Versuche funktionieren nicht.

Vielen Dank!

mario

  

Betrifft: dies liegt an SendKeys ... von: Tino
Geschrieben am: 28.01.2010 08:47:44

Hallo,

versuch mal sowas.

Private Declare Function OpenProcess Lib "kernel32" ( _
  ByVal dwDesiredAccess As Long, _
  ByVal bInheritHandle As Long, _
  ByVal dwProcessId As Long) As Long

Private Declare Function TerminateProcess Lib "kernel32" ( _
  ByVal hProcess As Long, _
  ByVal uExitCode As Long) As Long
        
Private Declare Function CloseHandle Lib "kernel32" ( _
  ByVal hObject As Long) As Long


Sub test()
Dim lTaskID As Double
Dim lhwnd As Long, lResult As Long

lTaskID = Shell("C:\Windows\system32\notepad.exe", 1)

 '...
 '...
 '...
 
'Task beenden
lhwnd = OpenProcess(1&, 0&, CLng(lTaskID))
TerminateProcess lhwnd, 1&
lResult = CloseHandle(lhwnd)

If lResult = 1 Then MsgBox "Prog geschlossen"

End Sub
Gruß Tino


  

Betrifft: AW: dies liegt an SendKeys ... von: Mario
Geschrieben am: 28.01.2010 09:07:13

mann-oh-mann!
das klappt einfach PRIMA!!!! :-)
Vielen herzlichen Danke Tino!
mario