假设您要创建然后关闭链接的Excel工作表:
Dim shp As shape
Set shp = Application.ActiveDocument.Shapes.AddOLEObject(ClassType:="Excel.Sheet")
DoEvents
shp.OLEFormat.Object.Close
此失败并出现此错误:
运行时错误' 1004'
Workbook类的Close方法失败
为什么呢?我似乎无法在单词中找到任何这种情况的例子,我能找到的最接近的例子是this,它与用户表单的关系比实际函数更多。
错误似乎非常通用,有没有办法得到更具体的理由"为什么" close方法失败了吗?看来如果你谷歌,你会发现这个错误是由于各种原因(example,another example)而引发的,但是这些错误似乎没有任何东西可以添加到这个特定的问题中。
注意:" shp.OLEFormat.Object.Save"
出现类似的错误答案 0 :(得分:2)
这个问题的通常原因是让对象在文档表面上“取消选择”......
根据我的经验,无法关闭在文档表面上激活的工作簿。这与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
答案 1 :(得分:1)
这是我想出的:
Set xlBook = olef.Object
Set xlApp = xlBook.Application
xlApp.SendKeys "{ESC}"
这将停止Excel.Application,并使用户返回Word。与执行命令以关闭工作簿相同。