【问题标题】:Powershell - Suppress Excel Dialog Box - Merge Changes with ServerPowershell - 抑制 Excel 对话框 - 将更改与服务器合并
【发布时间】:2021-08-09 00:54:57
【问题描述】:

我有调用 Excel VBA 脚本并保存文件的 Powershell 脚本。当我收到一个对话框"Would you like to merge your changes with the latest updates on the Server?" 并且 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

【问题讨论】:

  • 在同一路径使用SaveAs()是否有效?顺便说一句,我更喜欢使用这个模块而不是 ComObject - ImportExcel
  • 它在无法访问“vb 测试 - 复制 v5.xlsm”时出错。在 line:26 char:5 + $wb.SaveAs("C:\vb t ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
  • 我可以使用 ImportExcel 模块运行宏吗?
  • 试试这个 - SaveAs($filename, 52, [Type]::Missing, [Type]::Missing, $false, $false, 1, 2) - Workbook.SaveAs。以FileName, FileFormat (52 for xlsm), Password (Can't be null, so use Type.Missing), WriteResPassword (Type missing again), ReadOnlyRecommended, CreateBackup, Access Mode (1 - do not change access mode), ConflictResolution (2 - User changes always accepted) 命名的参数解释。您可以在链接页面上看到指向某些值的链接。
  • 如果我使用SaveAs($filename),文档将保存到我的文档文件夹,而不是它原来所在的文件夹路径。我尝试传递文件的完整路径,我收到此错误@987654329 @

标签: excel vba powershell


【解决方案1】:

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

请注意,如果其他人在线对 Excel 进行更改,这可能会导致合并问题。我正在尝试实现一个 checkin() 和 checkout() 方法,它也应该解决这个问题: Opening an Excel document from SharePoint using PowerShell

 $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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2010-11-04
    • 2010-11-01
    • 2012-01-14
    • 2012-09-02
    • 2013-05-03
    • 1970-01-01
    相关资源
    最近更新 更多