J'écris un script qui parcourt les feuilles Excel intégrées dans mon document avec VBA. Je les active, fais quelques modifications et passe à la suivante. Ensuite, je veux que la dernière feuille soit à nouveau désactivée et je veux que le curseur revienne au début du document.La désactivation de OLEObject avec VBA rompt le ruban dans Word 2007
J'ai le code suivant à ce jour:
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
J'empruntèrent le code de désactivation de Gary McGill. Cependant, cette méthode de désactivation casse le ruban dans Word 2007.
Je peux imaginer qu'il serait plus agréable de réactiver le document principal au lieu de désactiver le OLEObject, mais ajouter wrdActDoc.Activate
ne semble pas le faire.
Est-il possible de désactiver la feuille de calcul Excel sans casser le ruban?