Я пишу скрипт, который просматривает встроенные таблицы Excel в моем документе с VBA.Я активирую их, делаю некоторые модификации и перехожу к следующей.После этого я хочу, чтобы последний лист снова деактивировался, и я хочу, чтобы курсор вернулся к началу документа.
Пока у меня есть следующий код:
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
Я позаимствовалкод деактивации от Гэри МакГилл .Однако этот метод деактивации разрывает ленту в Word 2007.
Я могу себе представить, что было бы лучше повторно активировать основной документ вместо деактивации OLEObject, но добавление wrdActDoc.Activate
, похоже, не делает этого.
Можно ли деактивировать лист Excel без разрыва ленты?