Как использовать Powershell для запуска программы VBA на открытой книге Excel - PullRequest
0 голосов
/ 11 сентября 2018

Я создаю сценарий powershell для поиска указанной открытой рабочей книги Excel и запуска на нем vba.

Хорошо работает, когда есть одно приложение Excel с несколькими рабочими книгами.

Однако он не работает, когда имеется несколько приложений Excel, так как код ищет книги только в одном приложении Excel. Как искать книги во всех открытых приложениях Excel?

Вот код, который я использую

Try{
    # Check if any excel application is running
    $ExistingExcel = ((get-process excel | select MainWindowTitle, ID, StartTime | 
    Sort StartTime)).mainwindowtitle

    # Get existing excel application
    $excel = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')

    # Get a list of workbook name in the excel application
    $ExcelList = $excel.workbooks | Foreach-object {$_.name}

    # Check if the list of workbooks contain the target workbook
    $targetWb = if ($ExcelList -contains "MyTargetWorkbook.xlsm") 
    {
         # Activate the target workbook and run the vba
         $excel.Workbooks.Item("MyTargetWorkbook.xlsm")
         $targetwb.Activate()
         $excel.run('MyVbaProgram')

    } else {
        # Do error handling
    }

}Catch{
    # Do error handling
}    
...