Anzeige
Archiv - Navigation
1204to1208
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel in Taskleiste blinken lassen

Excel in Taskleiste blinken lassen
Daniel
Hallo,
ich möchte gerne den user über kritische Events in einer Excel Datei informieren. Das Ganze würde ich am liebsten so machen, dass die Abläufe in der Tabelle/Datei nicht unterbrochen werden.
Ich habe da an die Möglichkeit gedacht Excel in der Taskliste blinken zu lassen. Geht das irgendwie ohne den Ablauf zu unterbrechen.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel in Taskleiste blinken lassen
17.03.2011 18:07:13
ransi
HAllo
Was sind denn "kritische Events" , und vorallem was sind das für "Abläufe" die da nicht untebrochen werden sollen ?
ransi
AW: Excel in Taskleiste blinken lassen
17.03.2011 19:03:19
Nepumuk
Hallo,
klar geht das:
Option Explicit

Private Declare Function FlashWindowEx Lib "user32.dll" ( _
    ByRef pfwi As FLASHWINFO) As Boolean

Private Const FLASHW_STOP = &H0
Private Const FLASHW_CAPTION = &H1
Private Const FLASHW_TRAY = &H2
Private Const FLASHW_ALL = (FLASHW_CAPTION Or FLASHW_TRAY)
Private Const FLASHW_TIMER = &H4

Private Type FLASHWINFO
    cbSize As Long
    hwnd As Long
    dwFlags As Long
    uCount As Long
    dwTimeout As Long
End Type

Private ludtFlashInfo As FLASHWINFO

Public Sub Flash_On()
    With ludtFlashInfo
        .cbSize = Len(ludtFlashInfo)
        .dwFlags = FLASHW_TRAY Or FLASHW_TIMER
        .dwTimeout = 500 'Intervall in Millisekunden
        .hwnd = Application.hwnd
        .uCount = 0
    End With
    Call FlashWindowEx(ludtFlashInfo)
End Sub

Public Sub Flash_Off()
    ludtFlashInfo.dwFlags = FLASHW_STOP
    Call FlashWindowEx(ludtFlashInfo)
End Sub

Gruß
Nepumuk
Anzeige
AW: Excel in Taskleiste blinken lassen
17.03.2011 19:29:02
Reinhard
Hallo Nepumuk,
bei mir blinkt da nix. Mein XL2000 kennt kein Application.hwnd, da habe ich noch eine API-Deklaration eingebaut und suche nach dem Fenster xlmain um dessen hwnd zu erhalten, erhalte auch einen Wert, aber blinken tut da nix.
Habe ich das falsche Fenster erwischt?
Option Explicit
Private Declare Function FlashWindowEx Lib "user32.dll" ( _
ByRef pfwi As FLASHWINFO) As Boolean
Private Const FLASHW_STOP = &H0
Private Const FLASHW_CAPTION = &H1
Private Const FLASHW_TRAY = &H2
Private Const FLASHW_ALL = (FLASHW_CAPTION Or FLASHW_TRAY)
Private Const FLASHW_TIMER = &H4
Private Type FLASHWINFO
cbSize As Long
hwnd As Long
dwFlags As Long
uCount As Long
dwTimeout As Long
End Type
Private ludtFlashInfo As FLASHWINFO
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Sub Flash_On()
Dim hwnd As Long
With ludtFlashInfo
.cbSize = Len(ludtFlashInfo)
.dwFlags = FLASHW_TRAY Or FLASHW_TIMER
.dwTimeout = 500 'Intervall in Millisekunden
hwnd = FindWindow("xlmain", vbNullString)
'.hwnd = Application.hwnd
.uCount = 0
End With
Call FlashWindowEx(ludtFlashInfo)
End Sub
Public Sub Flash_Off()
ludtFlashInfo.dwFlags = FLASHW_STOP
Call FlashWindowEx(ludtFlashInfo)
End Sub

Gruß
Reinhard
Anzeige
AW: Excel in Taskleiste blinken lassen
17.03.2011 20:12:33
Nepumuk
Hallo Reinhard,
du musst das Handle von Excel natürlich an die Flashinfo-Struktur übergeben.
Public Sub Flash_On()
    With ludtFlashInfo
        .cbSize = Len(ludtFlashInfo)
        .dwFlags = FLASHW_TRAY Or FLASHW_TIMER
        .dwTimeout = 500 'Intervall in Millisekunden
        .hwnd = FindWindow("XLMAIM", Application.Caption)
        .uCount = 0
    End With
    Call FlashWindowEx(ludtFlashInfo)
End Sub

Gruß
Nepumuk
Anzeige
AW: Excel in Taskleiste blinken lassen
17.03.2011 21:16:27
Reinhard
Hallo Nepumuk,
leider nein, da blinkt nix.
uCount ist doch die Anzahl des Blinkens, auch wenn ich das erhöhe tut sichj da nix.
Public Sub Flash_On()
With ludtFlashInfo
.cbSize = Len(ludtFlashInfo)
.dwFlags = FLASHW_TRAY Or FLASHW_TIMER
.dwTimeout = 500 'Intervall in Millisekunden
.hwnd = FindWindow("XLMAIN", Application.Caption)
.uCount = 10   '0
End With
Call FlashWindowEx(ludtFlashInfo)
End Sub

Gruß
Reinhard
AW: Excel in Taskleiste blinken lassen
17.03.2011 22:38:45
Nepumuk
Hallo Reinhard,
ich weis nicht was du da machst, aber ich habe das jetzt unter Excel 2000, 2002, 2003, 2007 und 2010 getestet. Das funktioniert in jeder Version. Natürlich nachdem ich den Klassennamen korrigiert habe, aber das hast du ja selbst gesehen das ich XLMAIN falsch geschrieben hatte. Ich lade dir mal eine funktionierende Mappe hoch.
https://www.herber.de/bbs/user/74006.xls
Gruß
Nepumuk
Anzeige
AW: Excel in Taskleiste blinken lassen
17.03.2011 23:16:28
Reinhard
Hallo Nepumuk,
das mit xlmain hab ich gesehen, das ist es nicht.
Leider blinkt auch deine beispielmappe nicht bei mir :-(
Da ich deien Sonderklasse kenne sehe ich deutlich kommen daß ich bald erwürgt werde wegen einem doofen Fehler bei der Anwendung von mir.
Ich hab einen Haltepunkt reingesetzt, der wird angesprungen, also wird vba-Code ausgeführt.
Blinken von Excel in der Taskleiste bedeutet doch daß ich da den Eintrag " X Micoorosoft Excel... bklinkend sehen müßte, entweder so rot wie oft bei sowas oder von mir aus itrgendwie blinkend, da tut sich aber nix und natürlich warte ich da über eine Sekunde usw.
Mom...aha, unter XL2007 klappt dein Code sofort, also ein XL2000 Problem, zumindest mit meinem XL2000.
Gewissermaßen ein Fortschritt bei der Fehlereinkreisung :-)
Danke für deine Geduld.
Gruß
Reinhard
Anzeige
Frage noch offen owT
18.03.2011 14:10:32
Reinhard


AW: Excel in Taskleiste blinken lassen
18.03.2011 10:07:27
Daniel
Hi Nepumuk,
bei mir klappts auf anhieb. Sehr gut, danke!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige