如何使用VBA从任务栏打开应用程序?

时间:2017-04-24 05:29:45

标签: vba

我在网上找到了一个代码:

Public Sub showProcesses()
    Dim W As Object
    Dim ProcessQuery As String
    Dim processes As Object
    Dim process As Object
    Set W = GetObject("winmgmts:")
    ProcessQuery = "SELECT * FROM win32_process"
    Set processes = W.execquery(ProcessQuery)
    For Each process In processes
        MsgBox process.Name
        MsgBox process.Description
    Next
    Set W = Nothing
    Set processes = Nothing
    Set process = Nothing
End Sub

它打印出所有活动进程的名称和描述。

示例:

  

TeraPad.exe
acad.exe
WINWORD.EXE
EXCEL.EXE
...

使用下面的代码,我获得了任务栏中可用的应用程序的窗口名称:

Private Sub AppActivates(WindowName As String)

    Dim WD, task, n As Long
    Set WD = CreateObject("Word.Application")

    For Each task In WD.Tasks
        MsgBox task.Name
    Next

    WD.Quit
    Set WD = Nothing

End Sub

示例:

  

Basic_vba.pdf - Adob​​e Acrobat Reader DC
AutoCAD Mechanical 2016 - [sample_model.dwg]
20170424.txt - TeraPad
...

应用程序acad.exe [AutoCAD]位于任务栏中(状态为Minimum),我想在VBA中打开(调用)它的窗口。

这可能吗?

任何有关这些的提示都会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用AppActivate方法和窗口标题(恰好是任务的名称)。

VBA.AppActivate("Basic_vba.pdf - Adobe Acrobat Reader DC")

如果窗口最小化,那么您需要向窗口发送消息以恢复或最大化窗口。