Откройте встроенный объект в 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 - Verb
s - 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