0

次のように、EPS 画像を PowerPoint スライドに挿入する VBA コードがあります。

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 描画オブジェクトへの変換を確認した後、正常にグループ化を解除できます。

UI ではグループ化を解除できるのに、Excel VBA では (PowerPoint VBA ではできるのに) そうではないのはなぜですか? また、これを回避する方法はありますか?

4

2 に答える 2

0

グループ化を解除して選択したままにしておくと、グループ内の b/g オブジェクトと他のオブジェクトが残ります。次に、そのコンポーネントへのグループ化を解除し、それらを選択したままにします。

Selection.ShapeRange.Ungroup.Select
Selection.ShapeRange.Ungroup.Select

いくつかの異なる単純な EPS インポートと EMF/WMF でテストしました。それらすべてで動作します。

ただし、Office が EPS を処理する方法は中途半端なものであることを理解してください。いつもそうでした。少なくとも今回は、彼らは一般的に正しい理由で間違ったことをしています。

于 2013-10-03T14:28:12.620 に答える
0

ただの推測です!

Sub unGrp()
Dim opic As ShapeRange
Dim filename As String
filename = "C:\Users\John\Desktop\telephone.eps"
ActiveSheet.Pictures.Insert(filename).Select
Set opic = ActiveWindow.Selection.ShapeRange
opic.Ungroup
End Sub
于 2013-10-03T14:07:00.360 に答える