office.notes@misora05

本館ブログのうち,Office・Windwsがらみのネタ+@を抜き出したもの.月水金更新予定.

VBAによるタスク操作(API不使用)

Excelに限らず,VBAWindowsのタスク・プロセスの操作をしようと思ったら,まずはWindows APIを叩くことを考えるのではないかと思います.

まぁ,それも道理ですよね――そのような機能,VBAExcelには用意がありませんし,「VBAでシステム関連の情報を取得しようと思ったら,Windows APIを叩く」は正攻法だと思います.

ところが.

Word VBAでタスクの操作を行う??

まずはこちらを見ていただきたく.

システムで実行されている 1 つのタスクを表します。 タスクオブジェクトは、 Tasks コレクションのメンバーです。 Tasks コレクションには、システム上で実行されているすべてのアプリケーションが含まれています。

このように,なぜかWordにはタスク関連のオブジェクトが所属しているのです.
したがって,ExcelからWordを参照設定すれば,‥

f:id:misora05:20190303121449p:plain

こうして,‥

Public Sub Get_Tasks()
    
    Dim wd As Word.Application
    Set wd = New Word.Application
    
    Dim tsk As Word.Task
    
    Dim c As Excel.Range
    Set c = ThisWorkbook.Worksheets.Item(1).Cells.Item(1, 1)
    
    For Each tsk In wd.Tasks
        c.Value = tsk.Name
        
        If tsk.Name = "電卓" Then
            If MsgBox(tsk.Name & " をアクティブにしますか?", vbQuestion + vbYesNo) = vbYes Then
                Call tsk.Activate
            ElseIf MsgBox(tsk.Name & " を終了しますか?", vbQuestion + vbYesNo) = vbYes Then
                Call tsk.Close
            End If
        End If
        
        Set c = c.Offset(1, 0).Cells
    Next
    
    Call wd.Quit
    Set wd = Nothing
    
End Sub

f:id:misora05:20190303121538p:plain

こうなった.

にしても,タスク関連のオブジェクトがOfficeに用意されているにしても,なんでWordだったんでしょうね.

ちなみに

Wordにはこのようなオブジェクトも用意されています.

これでシステム情報の一部を取得したり,「システム情報(msinfo32.exe)」を開いたりできるのですが‥.
これもなぜWord?

「Wordにはシステム関連のオブジェクトを格納する」というお約束があったんでしょうか??

Microsoft Store (マイクロソフトストア)

Word VBA参考書籍

Word VBAの参考書籍って数が少ないですよね.
というか,「VBAといえばAccessExcelのもの!」という人も多いんじゃないでしょうか.かくいう私も,使うのは9割方それですが.

最速攻略 Word マクロ / VBA徹底入門 〔Word 2013/2010/2007対応版〕 作って簡単・超便利! Wordのマクロ実践サンプル集 [Word2010/2007/2003/2002対応] (Wordで作ったWordの本)

Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)