У меня есть рабочий макрос VBA с рабочими данными в Excel. Возможно, некоторые из вас не захотят увидеть этот Макрос, но поверьте мне, он работает. Он работал в течение нескольких недель, и если я открою файл, PowerShell собирается его отредактировать и щелкнуть кнопку «Макрос также работает», так что никаких проблем нет.
Для запуска мой скрипт PowerShell должен просто выполнить макрос и сохранить в Excel. Я узнал, как вы запускаете макросы / нажимаете кнопку и как сохранить файл. Вот мой код:
$ExcelPath = "PathToMyExcel"
$excel = New-Object -comobject Excel.Application
$workbook = $excel.Workbooks.Open($ExcelPath)
$excel.Visible = $true
$app = $excel.Application
$app.Run("Sheet.Macro")
Start-Sleep -Seconds 2 # -> Just so I can see what the Macro "Should" be doing
$excel.Visible = $false
$workbook.Saved = $true
$workbook.SaveAs($ExcelPath)
$xl.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($xl)
[System.GC]::Collect()
Моя первая проблема состояла в том, что он не нашел и не смог запустить макрос, поэтому я активировал макросы из get go и позже обнаружил, что мне нужно включить имя листа, в котором находился мой Button / Macro (Sheet.Macro).
Я пытался изменить $ app.Run ("") со всем, Sheet, Workbook, Whole Excel Path и другими, все мне дают ошибка, из-за которой не удалось найти макрос, но не «Sheet.Macro», который не возвращает ошибок, но, как я уже сказал, ничего не делает.
Итак, теперь я не могу есть ошибки, это должно работать, но это не так. Это потому, что это макрос VBA или что-то другое?