Powershell等待宏在Excel中执行

时间:2018-12-18 13:31:38

标签: excel vba powershell

我正在使用一个非常简单的Powershell打开excel文件,运行宏并保存文件。

宏基本上是“数据”选项卡下的“全部刷新”按钮。

我的问题是excel挂在Save阶段,因为REFRESH ALL从未完成。

如果我在命令之间添加了暂停。我可以顺利进行而没有问题。

clear

$file = "\\website\folder\file.xlsm"

$displayname = $File.split("\")[$File.split("\").count-1]

Write-Host "Creating Excel Instance for $displayname"

$Excel = New-Object -ComObject Excel.Application

Write-Host "Opening $displayname"

$Excel.Visible = $True

$Excel.StatusBar = "Opening the file... Please be patient..." 

$Workbook = $Excel.Workbooks.Open($file)

Write-Host "Running Refresh Query"

$Excel.StatusBar = $False

$Excel.Run("Refresh_All")

PAUSE ## This pause is needed in order to wait the Macro to happen

Write-Host "Saving $displayname" 

$Workbook.Save()

Write-Host "Close Excel Instance"

$Excel.Quit()

如果尝试读取$ excel.Ready状态...但这始终处于准备状态...

我正在寻找一种读取状态栏并识别RUNNING Background QUERY消息并在完成后保存文件的方法。

有任何提示吗?

1 个答案:

答案 0 :(得分:3)

我找到了解决方法...

解决方案:“转到数据选项卡,单击连接组中的连接,单击每个连接,然后单击属性,然后取消选中“启用后台刷新”框。 (tylerlohman@gmail.com,pcreview,2013年。)。