我有一个错误,另一个应用程序已经创建了一个Excel工作簿,并且这个工作簿不能从Excel关闭。创建工作簿的应用程序是一个SAP自定义应用程序。我们不能访问这个应用程序,但我们可以访问VBA。最疯狂的是vba:
myWorkbook.close不关闭工作簿,而是报告Application Defined or Object Defined error.。
在以前版本的Excel中,调用myWorkbook.close会导致VBA崩溃,但不受Excel影响,因此我已经知道有什么问题,但不确定是什么.无论如何,这里有一些我试着解决这个问题的方法:
On Error Resume Next --只是跳过创建Excel window/workbook.Application.DisplayAlerts = falseApplication.IgnoreRemoteRequests = falseApplication.EnableEvents = falseCloseWindow(stdAcc.FromExcel().hwnd) call CloseWindow Win32 API函数stdAcc.FromExcel().SendMessage(...)向应用程序窗口发送各种消息,包括WM_CLOSE、WM_QUIT、WM_DESTROY、.这引发了另一个错误消息Cannot quit Microsoft Excel.stdAcc点击红十字-似乎不可能,因为显然红十字是虚拟的,并且没有实现IAccessible interface...编辑:
在搜索了几个小时的ABAP代码之后,我终于发现了如何重现这个问题:
$co = New-Object -ComObject "Excel.Sheet"
$co.parent.visible = $True这将向当前活动Excel实例中添加工作表对象。现在,您可以尝试关闭上面的工作簿,所有选项都会失败。问题是,有办法绕过它吗?
发布于 2020-05-05 02:34:06
我猜是因为另一个应用程序对工作簿有“控制权”。您需要先使用vba自动化服务器抓取该工作簿,然后关闭它。
假设您在excel中使用vba,那么您需要查找自定义SAP应用程序打开的工作簿。如果你知道它的名字,那就容易多了!我猜它叫"book1“
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 0https://stackoverflow.com/questions/61602541
复制相似问题