Откройте встроенный объект в Excel с помощью VBA

В документ MS Office я встроил / вставил внешний документ (объект) (PDF в моем случае).

После открытия документа, когда я нажимаю на значок объекта PDF, он открывает встроенный в него файл PDF.

Используя VBA / Macro, я хочу сделать то же самое, где мне нужно будет запустить макрос, и он откроет внедренный файл PDF (без нажатия на иконку PDF).

Является ли это возможным?

Спасибо,

3 ответа

Excel:

Вы можете получить OLEObject сформировать OLEObjects из Worksheet, Увидеть OLEObjects - https://msdn.microsoft.com/en-us/library/office/ff840244.aspx, OLEObject - https://msdn.microsoft.com/en-us/library/office/ff838421.aspx, OLEObject участники - https://msdn.microsoft.com/EN-US/library/office/ff841208.aspx.

Есть метод Verb который имеет глагол для открытия объекта. См. https://msdn.microsoft.com/EN-US/library/office/ff838827.aspx - Verbs - https://msdn.microsoft.com/EN-US/library/office/ff820926.aspx

Пример:

Sub test()
 With ActiveSheet
  Set o = .OLEObjects("Objekt 1")
  o.Verb xlVerbOpen
 End With
End Sub

"Объект 1" - это имя объекта на листе Excel. Объект должен быть в активном листе.

Слово:

В Word это зависит от того, находится ли встроенный объект в InlineShape или Shape, И нет OLEObjects коллекция. Так что вы должны справиться с Shape.OLEFormat, Увидеть InlineShapes - https://msdn.microsoft.com/en-us/library/office/ff822592.aspx, Shapes - https://msdn.microsoft.com/en-us/library/office/ff845240.aspx, Shape - https://msdn.microsoft.com/en-us/library/office/ff196943.aspx, OLEFormat - https://msdn.microsoft.com/EN-US/library/office/ff197153.aspx.

Пример:

Sub test()

 With ActiveDocument
  Set oShape = .InlineShapes(1) 'The embedded object is the first InlineShape.
  'Set oShape = .Shapes(1) 'The embedded object is the first Shape.
  Set oOLEFormat = oShape.OLEFormat
  oOLEFormat.Open
 End With

End Sub

Короче говоря, когда вы уже знаете, на какой объект вы ссылаетесь:

превосходить

Sheets("Sheet1").OLEObjects("Object 1").Activate

слово

ActiveDocument.InlineShapes(1).OLEFormat.Open

Попробуй это:

      Sub test()
    With ActiveSheet
        Set o = .OLEObjects("Objekt 1")
        o.Verb xlPrimary
    End With
End Sub
Другие вопросы по тегам