Microsoft Excel

Herbers Excel/VBA-Archiv

Abfrage: Excel im Vordergrund? | Herbers Excel-Forum


Betrifft: Abfrage: Excel im Vordergrund? von: frigo
Geschrieben am: 25.11.2009 19:51:15

Hallo zusammen,
ich möchte bei einem bestimmten Ereignis in einem Makro die Excelapplikation in den Vordergrund bringen. Zumindest soll Excel in der Taskleiste blinken.
Wie kann ich sowas erzwingen?

D.h. es läuft ein Makro, das über mehrere Stunden Dateien ausliest etc.. bei einem bestimmten Ergebnis, soll ich nun darauf aufmerksam gemacht werden.
Angenommen ich arbeite gerade in Outlook etc. dann soll sich nun entweder Excel in den Vordergrund zwingen oder mindestens blinken.
Alle meine Versuche mit Msgbox, Windows, Goto etc. sind gescheitert.
Habt Ihr irgendwelche Ideen?

Danke!
frigo

  

Betrifft: AW: Abfrage: Excel im Vordergrund? von: Horst
Geschrieben am: 25.11.2009 20:49:24

wie wäre es, bei Auftreten eines bestimmten Ereignisses ein Makro in einer externen Arbeitmappe zu starten. Mit dem Öffnen eines neuen .xls ist Excel dann wieder automatisch im Vordergrund.


  

Betrifft: AW: Abfrage: Excel im Vordergrund? von: frigo
Geschrieben am: 26.11.2009 11:59:18

Gute Idee, danke!
frigo


  

Betrifft: AW: Abfrage: Excel im Vordergrund? von: Nepumuk
Geschrieben am: 26.11.2009 08:12:48

Hallo,

so:

Option Explicit

Private Declare Sub SetWindowPos Lib "User32.dll" ( _
    ByVal hWnd As Long, _
    ByVal hWndInsertAfter As Long, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal wFlags As Long)

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10

Public Sub Test()
    SetWindowPos Application.hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
        SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE
    SetWindowPos Application.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
        SWP_NOMOVE Or SWP_NOSIZE
End Sub

Gruß
Nepumuk


  

Betrifft: Super! (dennoch Nachfrage erforderlich) von: frigo
Geschrieben am: 26.11.2009 11:58:25

Hallo Nepumuk,
super vielen Dank. Funktioniert prächtig.
Kannst Du mir dennoch bitte erklären, warum die SetWindowsPos Routine zweimal aufgerufen wird. Was passiert da jeweils?
Kannst Du mir eine Site oder ein Buch empfehlen, wo man sich in die Nutzung von DLLs einlesen kann bzw. wie man rausfindet, welche DLL welche Möglichkeiten bieten?
Danke,
frigo


  

Betrifft: AW: Super! (dennoch Nachfrage erforderlich) von: Nepumuk
Geschrieben am: 26.11.2009 13:31:33

Hallo,

wenn du die TopMost-Eigenschaft nicht mehr zurück setzt, dann bleibt das Excelfenster im Vordergrund und du kannst kein anderes Fenster mehr nach vorne bringen. Das Verhalten kennst du vielleicht vom Taskmanager, der bleibt (optional) auch immer im Vordergrund.

Es gibt ein sehr gutes Buch von Dan Appleman. Allerdings nur in englisch.

http://www.amazon.de/Applemans-Visual-Programmers-Authoritative-Solution/dp/0672315904/ref=sr_1_1/278-3983658-3644666?ie=UTF8&s=books-intl-de&qid=1259238093&sr=8-1

Hier gibts den API-Guide und den API-Viewer und Beispiele: http://www.allapi.net/

Und Google mal nach "API" (Application Programming Interface) da gibt es jede Menge Fundstellen.

Gruß
Nepumuk


  

Betrifft: Nachtrag von: Nepumuk
Geschrieben am: 26.11.2009 13:35:23

Hier: http://www.dependencywalker.com/ kannst du dir den Dependency-Walker runterladen. Damit kannst du selbst in die DLL's schauen, welche Funktionen drin stecken. Allerdings werden nur die Funktionsnamen angezeigt, keine Parameter und keine Erklärung dazu.

Gruß
Nepumuk