Я создаю сценарий 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
}