2014-10-31 87 views
0

我想在Windows上的PowerPoint 2007中執行兩項操作之一。使用vba在PowerPoint 2007中定位幻燈片上的圖像

第一種是更改粘貼圖像的默認位置。當我粘貼我用SAS製作的圖表時,它粘貼到左上角。理想情況下,我想更改默認的粘貼位置。這似乎沒有任何簡單的選擇,但我想也許這是可能的VBA。

如果這是不可能的,那麼我想編寫一個VBA宏來瀏覽每張幻燈片並更改圖像位置。

我得到了一個幻燈片循環工作,感謝這個和其他網站(該MSGBOX只是測試):

Sub SlideLoop() 
    Dim osld As Slide 

    For Each osld In ActivePresentation.Slides 
     osld.Select 
     MsgBox "The slide index of the current slide is: " & _ 
      ActiveWindow.View.Slide.SlideIndex 
    Next osld 

End Sub 

除此之外,我還沒有多少運氣。我所看到的代碼段,選擇一個幻燈片和作物所有圖像或調整它們的大小,而且我發現excelhelphq.com此位,是爲了定位圖片:

With ActiveWindow.Selection.ShapeRange 
    .Left = 50 'change the number for desired x position 
    .Top = 50 'change the number for desired y position 
End With 

但我不知道如何將其集成到循環中,Powerpoint VBA的聯機文檔不是特別健壯。一些代碼涉及ShapeIndex,但我不確定如何使用它。

我應該提一下,當我有一張圖像時,我在幻燈片上只有一個圖像(但某些幻燈片根本沒有圖像)。

這似乎是最好的省時方法,儘管我仍然手動粘貼到PowerPoint中。

我感謝任何幫助!我找不到解決這個確切問題的任何事情。

PPT的VBA被淘汰了嗎?這感覺就像微軟不希望人們能夠根據他們非常好的在線文檔來弄清楚如何使用它。

回答

2

MS很快就不會很快淘汰VBA。如果有的話,太多的大型企業客戶會烤他們。總而言之,你是對的,文檔是不好的,每個版本都會變得更糟。

然後讓這樣的地方更有價值。所以,一點點清理你的基本循環第一:

Sub SlideLoop() 
    Dim osld As Slide 

    For Each osld In ActivePresentation.Slides 
     ' osld.Select No need to select a slide before acting on it 
     'MsgBox "The slide index of the current slide is: " & _ 
     '  ActiveWindow.View.Slide.SlideIndex 
     MsgBox "The slide index of the current slide is: " & cstr(osld.SlideIndex) 
    Next osld 

End Sub 

因此,這裏有一個關於如何做你後開始:

Sub SlideLoop() 
    Dim osld As Slide 
    Dim oSh As Shape 

    For Each osld In ActivePresentation.Slides 
     ' check each shape on the slide 
     ' is it an image or whatever you're looking for? 
     For Each oSh In osld.Shapes 
      With oSh 
       If .Type = msoLinkedPicture _ 
       Or .Type = msoPicture Then 

       ' position it to taste 
       .Left = 100 
       .Top = 100 

       ' centering/resizing gets trickier 
       ' but is still possible. 
       ' Exercise for the reader? 
       ' Hint: 
       ' ActivePresentation.PageSetup.SlideWidth and .SlideHeight 
       ' tells you the width and height of the slide 
       ' 
       ' All values are in Points (72 to the inch) 

       End If 
      End With 
     Next ' Shape 
    Next osld ' Slide 

End Sub 
+0

非常感謝史蒂夫!爲了簡單起見,我拿出了LinkedPicture檢查,不然的話,這可以很好地工作。 – jedmatic 2014-10-31 19:58:02

相關問題