Powershell-抑制Excel对话框-将更改与服务器合并

Powershell-抑制Excel对话框-将更改与服务器合并,excel,vba,powershell,Excel,Vba,Powershell,我有一个调用Excel VBA脚本并保存文件的Powershell脚本。关闭工作簿时,我遇到了一个问题,出现了一个对话框“是否要将更改与服务器上的最新更新合并?”,PowerShell等待用户确认。如何抑制此通知?我已经启用了displayAlerts=$false,但在这种情况下似乎不起作用 该文件位于共享onedrive文件夹位置,提示Excel提出此问题 $file="test - Copy v4.xlsm" $x1 = New-Object -ComObject

我有一个调用Excel VBA脚本并保存文件的Powershell脚本。关闭工作簿时,我遇到了一个问题,出现了一个对话框
“是否要将更改与服务器上的最新更新合并?”
,PowerShell等待用户确认。如何抑制此通知?我已经启用了displayAlerts=$false,但在这种情况下似乎不起作用

该文件位于共享onedrive文件夹位置,提示Excel提出此问题

 $file="test - Copy v4.xlsm"
 $x1 = New-Object -ComObject "Excel.Application"
 $x1.displayAlerts = $false # don't prompt the user
 $x1.Visible = $false
 $wb = $x1.workbooks.Open($file)
 $x1.Run('MACRO_NAME')
 $wb.Save()
 $wb.Close()
 $x1.Quit()
 Remove-Variable wb,x1

我可能偶然发现了一个解决办法。我没有使用Save或SaveAS并尝试传递参数,而是使用了Workbook.Close方法并将True作为参数传递,从而解决了我的问题

请注意,如果其他人正在Excel online上进行更改,这可能会导致合并问题。我正在尝试实现一个checkin()和checkout()方法,该方法也应该解决这个问题:


如果对同一路径使用
SaveAs()
,是否有效?顺便说一句,我更喜欢使用这个模块,而不是在无法访问“vbtest-copyv5.xlsm”时出错的ComObject。第26行字符:5+$wb.SaveAs(“C:\vb t…+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:OperationStopped:(:)[],COMException+FullyQualifiederRoId:System.Runtime.InteropServices.COMException我可以使用ImportException模块运行宏吗?请尝试以下代码>另存为($filename,52,[Type]::Missing,[Type]::Missing,$false,$false,1,2)-。按照
文件名、文件格式(52表示xlsm)、密码(不能为null,所以请使用Type.Missing)、WriteResPassword(再次缺少类型)、ReadOnlyRecommended、CreateBackup、访问模式(1-不更改访问模式)、冲突解决方案的顺序解释的参数(2-始终接受用户更改)
。您可以在链接页面上看到指向某些值的链接。如果使用
SaveAs($filename)
文档将保存到“我的文档”文件夹,而不是它原来所在的文件夹路径。我尝试传递文件的完整路径,但出现此错误
无法获取工作簿类在第1行char:1+$wb.SaveAs(“C:\Users\*\OneDrive\*\vb test…+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:操作停止:(:)[],COMException+FullyQualifiederRoId:System.Runtime.InteropServices.COMException
 $file="test - Copy v4.xlsm"
 $x1 = New-Object -ComObject "Excel.Application"
 $x1.displayAlerts = $false # don't prompt the user
 $x1.Visible = $false
 $wb = $x1.workbooks.Open($file)
 $x1.Run('MACRO_NAME')
 $wb.Save()
 $wb.Close($true)
 $x1.Quit()
 Remove-Variable wb,x1