VBA:タスクバーのアプリアイコンを点滅させる方法
その場合VBAのメッセージ(MsgBox)では最前面に表示されないので、処理が終了しても気が付かない場合があります。
完了の通知を視認できるよう、Win32APIを使って下のタスクバーのアプリアイコンを点滅させることができるので、その方法を説明します。
◆タスクバーのアプリアイコンを点滅させる方法
以下を実行すると、ブラウザなどでネットを見ていたり、メールチェックをしていても、タスクバーのアプリのアイコンが点滅します。
ExcelとAccessの場合を作りました。「★」部分を利用するものによって変えてください。
メッセージボックスと組み合わせることで、「完了」時にアプリアイコンが点滅するようになります。
※Office32bitで動作します。64bitでは動作しません
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Option Explicit Public Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 'テスト用なので、本番では不要' Public Declare Function FlashWindowEx Lib "user32" (FWInfo As FLASHWINFO) As Boolean Public Type FLASHWINFO cbSize As Long hWnd As Long dwFlags As Long uCount As Long dwTimeout As Long End Type Const FLASHW_CAPTION = 1 Const FLASHW_TRAY = 2 Const FLASHW_ALL = FLASHW_CAPTION Or FLASHW_TRAY Public Sub FlashAlert() Dim retVal As Integer Dim FWInfo As FLASHWINFO Sleep 1000 'テスト用に1秒止めてます。本番では不要' With FWInfo .cbSize = 20 'size of structure。何か分からない。。' .hWnd = Application.hWnd '★Excelの場合' '.hWnd = Application.hWndAccessApp '★Accessの場合'' .dwFlags = FLASHW_ALL .uCount = 5 '点滅回数' .dwTimeout = 500 '点滅の間隔、単位はミリ秒。ここでは0.5秒間隔' End With 'FlashWindowEx呼び出し' retVal = FlashWindowEx(FWInfo) MsgBox "完了" End Sub |