1

我正在编写一个脚本,该脚本使用 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 工作表?

4

1 回答 1

2

我不同意像你引用的 Gary 的代码那样“欺骗”Word。请参阅我关于以编程方式更新嵌入式 excel 文件的另一篇文章,了解如何安全停用(但要知道它是SendKeys,所以它永远不会 100% 完美)。

于 2011-03-25T07:10:43.373 回答