コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

実績がほしい

ノー実績ノー人権

はいさいまいど人権のないことに定評のある僕です。今日も人間性を捧げて醜く生きていきましょう!そんなわけでタイトル通り実績欲しいなーって愚痴をぼやきます。実績というとゲームやなんかの画面上の方にピロンとかでてくるアレが真っ先に思い浮かぶんですけど、現実世界の実績って言えばその人の生きてきた人間性の塊みたいなところありますよね。人生辛いね。



おしまい。


パワーポイントには実績機能が欲しい

というわけで、本日はパワポ使ってゲームとかでよく見かける実績機能を作ります。やはり僕は思うのですよ。パワポにはゲーム性が必要なのではと?
f:id:andron:20190923100547g:plain
とりまプロトタイプとしてこんなのをつくってみる。


んで、こんなアニメーションをつくるためのVBA書いてみた。スライドとシェイプの指定がまだ定まってないので一番最初のやつを取得するような感じになってます。

Sub AddBouncingAnimation()
    Dim sldActive As Slide
    Dim shpSelected As Shape

    Set sldActive = ActiveWindow.Selection.SlideRange(1)
    Set shpSelected = ActiveWindow.Selection.ShapeRange(1)
    ' 開始アニメーション
    Set animations = sldActive.TimeLine.MainSequence.AddEffect(Shape:=shpSelected, effectId:=msoAnimEffectFly)
    With animations
      .Timing.Duration = 5
      .Timing.Decelerate = 0.3
      .EffectParameters.Direction = msoAnimDirectionLeft
    End With
    
    ' 終了アニメーション
    Set animations = sldActive.TimeLine.MainSequence.AddEffect(Shape:=shpSelected, effectId:=msoAnimEffectFly)
    With animations
      .Timing.Duration = 5
      .Timing.Decelerate = 0.3
      .Timing.TriggerDelayTime = 2
      .EffectParameters.Direction = msoAnimDirectionLeft
      .Exit = msoTrue
    End With
End Sub

とりあえずのコード。開始位置の指定とか、複数シェイプの場合の実装とか、クリック制御でない表示のカスタマイズ法とかそういう細かい課題が残ってるけどもまだいまいちどこまでいじれるのか理解できてないし、いったん動くものできたんでこれで。

参考:Timingオブジェクト
Timing オブジェクト (PowerPoint) | Microsoft Docs


おわり*1

*1:もしかしたら続くかもしれない