2016-05-29 12 views
0

ユーザーはExcelでボタンをクリックして、PowerPointで選択した図形の高さ、幅、上、左のプロパティを取得できるツールを作成しようとしています。より効果的にExcelの図形のサイズを変更できます)。私は適切にパワーポイントと相互作用しないよ気持ちを持っていますが、どのように他見ることができませんExcelからVBAを使用したPowerPointで図形の寸法を取得

Dim PowerPointApp As Object 
Dim ActivePresentation As Object 
Dim ActiveSlide As Object 

Public Sub getDimensionsFromPowerPoint() 

    'Create an Instance of PowerPoint 
    On Error Resume Next 

    'Is PowerPoint already opened? 
    Set PowerPointApp = GetObject(Class:="PowerPoint.Application") 

    'Clear the error between errors 
    err.Clear 

    'If PowerPoint is not already open then open PowerPoint 
    If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(Class:="PowerPoint.Application") 

    'Handle if the PowerPoint Application is not found 
    If err.Number = 429 Then 
     MsgBox "PowerPoint could not be found, aborting." 
     Exit Sub 
    End If 

    On Error GoTo 0 

    'Optimize Code 
    Application.ScreenUpdating = False 

    'Create a New Presentation 

    Set ActiveShape = PowerPointApp.ActivePresentation.ActiveWindow.Selection 

    Debug.Print ActiveShape.width 

End Sub 

は現在、私は次のコードを有しているにも関わらず、PowerPointで選択した形状を参照することができていないようですかもね。このWebページから

+0

は 'あなたが形を持っているあなたの仮説を検証するために、'のDebug.Print型名(ActiveShape)を試してみてください。あなたのコードでActiveShapeはどこに定義されていますか? –

+0

私はパワーポイントでそれをする方法を知らないが、それはそれのように優れています: 'シェイプとして絵を薄く:Set Pic = Selection.Shaperange(1)' –

答えて

0

の代わりに:

Set ActiveShape = PowerPointApp.ActivePresentation.ActiveWindow.Selection 

用途:

Set ActiveShape = PowerPointApp.ActiveWindow.Selection.ShapeRange(1) 
+0

はいこれが働いた –

0

https://msdn.microsoft.com/en-us/library/office/ff745871.aspx

あなたは図形への参照を取得するために、ShapeRangeメソッドを使用する必要があるように見えます。

ShapeRangeはFor Eachをサポートしていると思います。なぜなら、(1)あなたはそれらをループすることができるからです。

(1)サポートの証拠それぞれが隠された_NewEnumメソッドの存在です。

関連する問題