首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Office365 Excel --如果Workbook.close不能工作,如何关闭窗口?

Office365 Excel --如果Workbook.close不能工作,如何关闭窗口?
EN

Stack Overflow用户
提问于 2020-05-04 22:15:39
回答 1查看 289关注 0票数 0

我有一个错误,另一个应用程序已经创建了一个Excel工作簿,并且这个工作簿不能从Excel关闭。创建工作簿的应用程序是一个SAP自定义应用程序。我们不能访问这个应用程序,但我们可以访问VBA。最疯狂的是vba:

代码语言:javascript
复制
myWorkbook.close

不关闭工作簿,而是报告Application Defined or Object Defined error.

在以前版本的Excel中,调用myWorkbook.close会导致VBA崩溃,但不受Excel影响,因此我已经知道有什么问题,但不确定是什么.无论如何,这里有一些我试着解决这个问题的方法:

  • On Error Resume Next --只是跳过创建Excel window/workbook.
  • Send键Alt+F4的SAP应用程序--似乎没有注册已发送的keys
  • Application.DisplayAlerts = false
  • Application.IgnoreRemoteRequests = false
  • Application.EnableEvents = false
  • CloseWindow(stdAcc.FromExcel().hwnd) call CloseWindow Win32 API函数
  • 使用stdAcc.FromExcel().SendMessage(...)向应用程序窗口发送各种消息,包括WM_CLOSEWM_QUITWM_DESTROY、.这引发了另一个错误消息Cannot quit Microsoft Excel.
  • Use stdAcc点击红十字-似乎不可能,因为显然红十字是虚拟的,并且没有实现IAccessible interface...
  • User手动单击红十字会。这是可行的,但遗憾的是,我们不能自动化这个.

编辑:

在搜索了几个小时的ABAP代码之后,我终于发现了如何重现这个问题:

代码语言:javascript
复制
$co = New-Object -ComObject "Excel.Sheet"
$co.parent.visible = $True

这将向当前活动Excel实例中添加工作表对象。现在,您可以尝试关闭上面的工作簿,所有选项都会失败。问题是,有办法绕过它吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-05 02:34:06

我猜是因为另一个应用程序对工作簿有“控制权”。您需要先使用vba自动化服务器抓取该工作簿,然后关闭它。

假设您在excel中使用vba,那么您需要查找自定义SAP应用程序打开的工作簿。如果你知道它的名字,那就容易多了!我猜它叫"book1“

代码语言:javascript
复制
   Dim xlApp As Object
    On Error Resume Next
      Set xlApp = GetObject("Book1").Application
      xlApp.Workbooks("Book1").Close (False) 'false, assuming you don't want to save it
    On Error GoTo 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61602541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档