gpt4 book ai didi

vba - 创建后关闭 OLEObject Excel.Sheet 时出错

转载 作者:行者123 更新时间:2023-12-05 03:11:43 24 4
gpt4 key购买 nike

假设您希望创建然后关闭链接的 Excel 工作表:

Dim shp As shape
Set shp = Application.ActiveDocument.Shapes.AddOLEObject(ClassType:="Excel.Sheet")

DoEvents

shp.OLEFormat.Object.Close

失败并出现此错误:

Run time error '1004'

Close method of Workbook class failed

为什么?我似乎无法在 word 中找到任何这样的例子,我能找到的最接近的例子是 this ,这与用户表单的关系比实际功能更重要。

这个错误看起来很一般,有什么方法可以得到更具体的原因“为什么”关闭方法失败?似乎如果你四处搜索,你会发现这个错误是由于各种原因( exampleanother example )而引发的,但这些似乎都没有添加到这个特定问题。

注意:“shp.OLEFormat.Object.Save”也会出现类似的错误

最佳答案

这个问题的通常原因是让对象在文档表面“取消选择”......

根据我的经验,关闭在文档表面上激活的工作簿是不可能的。这与 OLE 嵌入的工作方式有关。 Application.Quit 应该 工作,但(根据我的经验)在 Excel 中不起作用。

实现此目的的最可靠方法是强制在独立的 Excel.Application 窗口中打开工作簿,然后您可以关闭并保存工作簿并退出 Excel 应用程序。

像下面这样的东西应该可以工作:

Dim shp as Word.Shape
Dim oleF as Word.OLEFormat
Dim xlBook as Excel.Workbook 'or Object
Dim xlApp as Excel.Application 'or Object

Set shp = Application.ActiveDocument.Shapes.AddOLEObject(ClassType:="Excel.Sheet")
Set olef = shp.OLEFormat
oelf.DoVerb VerbIndex:=wdOLEVerbOpen
Set xlBook = olef.Object
Set xlApp = xlBook.Application
'Do things here
xlBook.Close
xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing

请注意,出于调试目的,您可能需要设置 xlApp.Visible = True。

xlBook.Close 可能仍然会产生错误,即使除此之外的行为是正确的。在这种情况下,可以通过关闭这一行的错误消息来抑制错误,然后重新设置它:

On Error Resume Next
xlBook.Close
On Error GoTo 0

关于vba - 创建后关闭 OLEObject Excel.Sheet 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com