2017-01-25 144 views
3

在早期版本的PPT中完美工作的代碼在2016年停止工作。 當我嘗試更改圖表中形狀的左側屬性時,出現Method left of object shape failed錯誤。 我可以完美的讀到.Left屬性。代碼在Powerpoint 2016中停止工作

我缺乏創意?我能做什麼?

Sub test11() 
    Dim sld As Slide 
    Dim objChart As Object 
    Dim shpBubble As Object 
    Set sld = ActivePresentation.Slides("ScatterPlot01_Purch6") 
    Set objChart = sld.Shapes("Chart01").Chart 
    sld.Select 
    objChart.Select 

    Set shpBubble = objChart.Shapes("P01") 
    'shpBubble.Select 

    Debug.Print shpBubble.Left, shpBubble.Visible 
    shpBubble.Left = 10 
End Sub 
+0

順便說一句:錯誤發生在最後一行shp ...左= 10 –

回答

2

UPDATE

在PowerPoint 2010和2013年,它的工作原理已經測試了,這個現在看起來像在2016年的錯誤!

* END *

我管理通過手動添加的形狀的測試圖,以重新創建在PowerPoint 2016(PC)的誤差(選擇該圖表然後單擊格式/插入形狀)和試圖寫入其中的幾個屬性,包括位置和格式,例如更改填充顏色。所有產生一個錯誤。

也許一個解決方法是使用.Delete方法刪除所需的形狀,然後在所需的大小和位置添加一個新形狀。這樣的事情:

Sub test11() 
    Dim sld As Slide 
    Dim objChart As Chart 'Object 
    Dim shpBubble As Shape 'Object 
    Set sld = ActivePresentation.Slides("ScatterPlot01_Purch6") 
    Set objChart = sld.Shapes("Chart01").Chart 
    sld.Select 
    objChart.Select ' this won't work as you can only select the parent shape sld.Shapes("Chart01") 

    With objChart 
    .Shapes("P01").Delete 
    .Shapes.AddShape msoShapeOval, 10, 10, 20, 20 
    End With 
End Sub 

挑戰是,因爲新形狀添加爲只讀,格式不能設置!

+1

奇怪的事情。它在PPT 2013上工作,它不是隻讀的,我可以更改可視屬性以及更改文本shpBubble.TextFrame.TextRange.Text =「X」只更改位置(頂部,左側,...)給我該錯誤 –

+0

我相應地更新了我的答案。看起來像一個錯誤,我已經轉發給VBA領域的PowerPoint MVP專家來確認。 –

+1

我已驗證問題出現在PPT 2016的多個版本中,但未出現在2013年版本中。我已將問題的簡化說明轉發給了MS上PPT團隊的幾位熟人。我不認爲有任何問題:你已經發現了一個錯誤,@EdwinEderle –