我正在编写一个脚本,通过VBA循环遍历我文档中的嵌入式Excel工作表。我激活它们,进行一些修改并继续下一个。之后,我想再次停用最后一张工作表,我希望光标返回到文档的开头。
到目前为止,我有以下代码:
Private Sub DeactivateOleObject(ByRef oOleFormat As OLEFormat)
On Error Resume Next
oOleFormat.ActivateAs "This.Class.Does.Not.Exist"
End Sub
Sub AutoOpen()
Dim lNumShapes As Long
Dim lShapeCnt As Long
Dim xlApp As Object
Dim wrdActDoc As Document
Set wrdActDoc = ActiveDocument
For lShapeCnt = 1 To wrdActDoc.InlineShapes.Count
If wrdActDoc.InlineShapes(lShapeCnt).Type = wdInlineShapeEmbeddedOLEObject Then
Dim oOleFormat As OLEFormat
Set oOleFormat = wrdActDoc.InlineShapes(lShapeCnt).OLEFormat
oOleFormat.Activate
DeactivateOleObject oOleFormat
End If
Next lShapeCnt
End Sub
我从Gary McGill借用了停用代码。但是,这种停用方法会破坏Word 2007中的功能区。
我可以想象重新激活主文档而不是停用OLEObject会更好,但添加wrdActDoc.Activate
似乎不会这样做。
是否可以在不破坏功能区的情况下停用Excel工作表?
答案 0 :(得分:2)
我不同意你使用Gary的代码“欺骗”这样的词。请参阅Update embedded excel file programmatically上有关如何安全停用的其他帖子(但知道它是SendKeys
,因此它永远不会100%完美)。