Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Ereignis "Window aktivieren"
Frage
Hallo!
Ich möchte mitttels VBA-Routine immer dann kontrolle erhalten, wenn das Excel-Fenster zum Vordergrund-Fenster wird. d. h. ich habe mehrere Anwendungen offen, und wechsele jetzt so, daß das Excel-Fenster in den vordergrund kommt.
Nach dem, was ich bisher herausbekommen habe, müßte die Ereignisprozedur Applicatin_WindowActivate heißen - aber wo bringe ich die unter, daß sie auch funktioniert?
Danke
Wolfram
Antwort 1 von manei
Hallo,
also ich habe zwar von VBA nicht viel Ahnung, habe auch kein Exel, denke aber, daß es nicht viel anders ist als bei z.B. VBS.
Sicher muß es heißen Application_WindowsActivate, wenn überhaupt.
Erst mal mußt die aber ein Object definieren und die ProcessID vom laufenden Exel-Prozess finden.
Unter VBS würde das z.B. wie folgt aussehen:
Set owmi = GetObject("winmgmts:")
prozesse = "select * from win32_process Where Name =" & "Exel.exe"
set Task = owmi.ExecQuery(prozesse)
For Each objekt in Tast
Set WshShell = WScript.CreateObject("WScript.Shell")
If WshShell.AppActivate(objekt.processID) = True Then
WScript.Echo "Kontrollmeldung"
end If
next
Dies mußt Du jetzt nur noch in den VBA-Code umschreiben.
Ich verstehe zwar Dein Anliegen nicht, da immer das Fenster im Vordergrund aktiv ist; ist oben an der Kopfleiste zu erkennen, blau wenn aktiv und grau wenn passiv.
MfG maneich
also ich habe zwar von VBA nicht viel Ahnung, habe auch kein Exel, denke aber, daß es nicht viel anders ist als bei z.B. VBS.
Sicher muß es heißen Application_WindowsActivate, wenn überhaupt.
Erst mal mußt die aber ein Object definieren und die ProcessID vom laufenden Exel-Prozess finden.
Unter VBS würde das z.B. wie folgt aussehen:
Set owmi = GetObject("winmgmts:")
prozesse = "select * from win32_process Where Name =" & "Exel.exe"
set Task = owmi.ExecQuery(prozesse)
For Each objekt in Tast
Set WshShell = WScript.CreateObject("WScript.Shell")
If WshShell.AppActivate(objekt.processID) = True Then
WScript.Echo "Kontrollmeldung"
end If
next
Dies mußt Du jetzt nur noch in den VBA-Code umschreiben.
Ich verstehe zwar Dein Anliegen nicht, da immer das Fenster im Vordergrund aktiv ist; ist oben an der Kopfleiste zu erkennen, blau wenn aktiv und grau wenn passiv.
MfG maneich
Antwort 2 von wolfram
@manei:
Ich muß ca. 1500 Geschäftsadressen mit Inhaber, Tel und Fax vervollständigen. zu jeder Adresse habe ich einen Link vorliegen. Meine Idee war folgende:
Ich nehme den Link in der Tabelle und öffne die Seite im Explorer (geht, getestet). Danach ist das Explorer-Fenster im Vordergrund.
1. Problem:
Warten, bis die Seite vollständig aufgebaut ist, für den test gelöst mit einer Zeitschleife
2. Problem:
Sendkeys mit CTRL/A, CTRL/C, Alt/F4. Ich weiß zwar nicht warum, aber die Tasten kommen nicht an. Also wollte ich das händisch machen.
3. Problem:
Wenn das Explorer-Fenster durch Alt/F4 wieder schließt, ist das Excel-Fenster wieder im Vordergrund. Aber wir merke ich das? (Darauf bezog sich meine Anfrage)
Danach kann ich mittel VBA-Makro die Daten aus dem Clipbord holen, meine Information extrahieren, und in die Tabelle übernehmen (geht, getestet.)
Mit der Umsetzung deines tip habe ich Probleme, also werde ich den letzten Teil an das Ereignis "selectionChange" hängen müssen.
Und dann setze ich einen Affen vor den Bildschirm, der mir 1500 mal die Tasten drückt. Laut Windows-Beschreibung sollte man das zwar alles Programmieren können, aber wie?
Danke für jeden weiteren Tip
Wolfram
Ich muß ca. 1500 Geschäftsadressen mit Inhaber, Tel und Fax vervollständigen. zu jeder Adresse habe ich einen Link vorliegen. Meine Idee war folgende:
Ich nehme den Link in der Tabelle und öffne die Seite im Explorer (geht, getestet). Danach ist das Explorer-Fenster im Vordergrund.
1. Problem:
Warten, bis die Seite vollständig aufgebaut ist, für den test gelöst mit einer Zeitschleife
2. Problem:
Sendkeys mit CTRL/A, CTRL/C, Alt/F4. Ich weiß zwar nicht warum, aber die Tasten kommen nicht an. Also wollte ich das händisch machen.
3. Problem:
Wenn das Explorer-Fenster durch Alt/F4 wieder schließt, ist das Excel-Fenster wieder im Vordergrund. Aber wir merke ich das? (Darauf bezog sich meine Anfrage)
Danach kann ich mittel VBA-Makro die Daten aus dem Clipbord holen, meine Information extrahieren, und in die Tabelle übernehmen (geht, getestet.)
Mit der Umsetzung deines tip habe ich Probleme, also werde ich den letzten Teil an das Ereignis "selectionChange" hängen müssen.
Und dann setze ich einen Affen vor den Bildschirm, der mir 1500 mal die Tasten drückt. Laut Windows-Beschreibung sollte man das zwar alles Programmieren können, aber wie?
Danke für jeden weiteren Tip
Wolfram

