Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 当.open导致挂起时,使用Powershell在Excel文档上运行宏_Vba_Excel_Powershell_Automation - Fatal编程技术网

Vba 当.open导致挂起时,使用Powershell在Excel文档上运行宏

Vba 当.open导致挂起时,使用Powershell在Excel文档上运行宏,vba,excel,powershell,automation,Vba,Excel,Powershell,Automation,这可能是两个问题的组合,但我对多种解决方案持开放态度 我使用以下代码使用Powershell打开Excel文件 $step=$args[0] $excel = New-Object -ComObject Excel.Application $excel.Visible = $True $excel.WindowState = 'xlMaximized' $workBook = $excel.Workbooks.Open($step) 当此Excel文件打开时,它会自动运行多个宏以下载第二个Ex

这可能是两个问题的组合,但我对多种解决方案持开放态度

我使用以下代码使用Powershell打开Excel文件

$step=$args[0]
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $True
$excel.WindowState = 'xlMaximized'
$workBook = $excel.Workbooks.Open($step)
当此Excel文件打开时,它会自动运行多个宏以下载第二个Excel文件。我需要关闭第一个Excel文件,看起来有一个宏可以调用,但是Powershell在调用
Workbooks.Open()
后,实际上从未返回到提示符(
PS C:\>
),我假设是因为宏生成的用户表单仍然处于打开状态(此时它只包含一个关闭按钮,用于触发exit宏)

那么,是否有任何方法可以让Powershell返回到提示符以运行exit宏,或者有其他方法可以关闭第一个Excel文件而不关闭第二个Excel文件


由于第二个文件是由第一个文件中的宏生成的,因此它将始终处于与第一个文件相同的进程中,因此使用“停止进程”将关闭两个窗口。

尝试禁用警报以抑制弹出:

$step=$args[0]
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $True
$excel.WindowState = 'xlMaximized'

$excel.DisplayAlerts = $false

$workBook = $excel.Workbooks.Open($step)

不幸的是,它似乎不起作用,我不确定userform是否真的被视为警报。@JamesBartlett我也不认为它值得一试。你能不能修改第一个文件中的宏,使其(a)不显示userform或(b)完成后自动关闭userform?我没有更改宏的权限,我没有excel工作表,我只是自动执行手动过程以节省时间。