У меня есть код VBA, который вставляет изображение EPS в слайд PowerPoint следующим образом:
Function InsertPicture(filename as String) As Shape
Dim curSlide As Integer
Dim oShp As Shape, gShp As Shape
curSlide = ActiveWindow.View.Slide.SlideIndex
With ActivePresentation.Slides(curSlide).Shapes
Set oShp = .AddPicture(filename, msoFalse, msoTrue, 0, 0)
' Convert (by ungrouping) from EPS to Microsoft Office drawing object
oShp.Ungroup.Name = "GroupEPS"
' Return the new Microsoft Office drawing object
Set InsertPicture = ActivePresentation.Slides(curSlide).Shapes("GroupEPS")
End With
End Sub
Эквивалентная функция вставки изображения для Excel выглядит следующим образом:
ActiveSheet.Pictures.Insert(filename).Select
Или это, если требуется ссылка на объект:
Dim oPic as Object
Set oPic = ActiveSheet.Pictures.Insert(filename)
Но когда я пытаюсь разгруппировать его с помощью следующей строки, я получаю сообщение об ошибке 438 «Объект не поддерживает это свойство или метод».
' For a selection
Selection.Ungroup
' For an object
oPic.Ungroup.Name = "GroupEPS"
Однако, если я щелкну правой кнопкой мыши изображение, которое было правильно вставлено на лист, я смогу успешно разгруппировать его после подтверждения преобразования в объект рисования Microsoft Office.
Почему пользовательский интерфейс позволяет разгруппировать, а Excel VBA — нет (в то время как PowerPoint VBA — делает), и есть ли способ обойти это?