2017-08-24 38 views
2

我想在Microsoft Office PowerPoint中使用VBA的圖片的入口效果中添加一個浮點。Powerpoint VBA:如何指定Float In Entrance Effect的方向

我想在動畫中的漂浮在向下方向

這裏走的是我的代碼:

Sub add_pic_float_in() 


' Insert the Picture 
Set myDocument = ActivePresentation.Slides(1) 

myDocument.Shapes.AddPicture FileName:="C:\Users\forson\Pictures\Picture.svg", LinkToFile:=msoTrue, SaveWithDocument:=msoTrue, _ 
    Left:=a * 10, Top:=-1000, Width:=359.055, Height:=1284.803 

' Crop the Image 
    With myDocument.Shapes(1) 
     .Name = "Picture 1" 
     .PictureFormat.CropLeft = 140 
     .PictureFormat.CropRight = 130 
     .PictureFormat.CropTop = 650 
    End With 

' Create shape 
Dim picture As Shape 

Set picture = myDocument.Shapes(1) 

' Create Effect 
Dim floatin As Effect 

' Set Effect to Picture 

Set floatin = myDocument.TimeLine.MainSequence.AddEffect(Shape:=picture, effectId:=msoAnimEffectFloat) 
     floatin.Timing.Duration = 1 
     floatin.EffectParameters.Direction = msoAnimDirectionDown 
     floatin.Timing.TriggerType = msoAnimTriggerWithPrevious 

End Sub 

不過,我碰到這個錯誤:

「運行 - 時間錯誤「:'-2147188160(80048240)':EffectParameters(未知成員):無效請求。」

而當我刪除行「floatin.EffectParameters.Direction = msoAnimDirectionDown」,它產生一個動畫對象,但它不是「浮動」動畫。

我試過看herehere但我找不到解決方案。

+0

不是錯誤,但'myDocument'應該是一個聲明的局部變量。在模塊頂部是否指定了「Option Explicit」?這樣做會迫使你聲明所有變量,從而阻止VBA愉快地編譯錯別字。也就是說,'ActivePresentation.Slides(1)'應該是'myDocument';你無緣無故地重新引用同一個對象兩次。 'floatin'局部變量可以用'With'代替。但無論如何,這些只是小小的改進,不熟悉PowerPoint對象模型。祝你好運! –

+0

那......不是我的觀點。您在3個地方解除引用'ActivePresentation.Slides(1)'對象 - 該變量*是有用的。我的建議是*使用*它,而不是*刪除*它! –

+0

@ Mat'sMug好點,我已經改變它去除myDocument變量,因爲它沒有那麼多。如何使用'With'塊來替換'floatin'局部變量?對不起,由於我缺乏理解,我遵循[this](https://msdn.microsoft.com/en-us/vba/powerpoint-vba/articles/effect-object-powerpoint)教程來添加效果。 – FZG

回答

0

設置effectId:=msoAnimEffectFloateffectId:=msoAnimEffectDescend創建一個浮動下移動畫。

無需指定你得到.EffectParameters.Direction