初心者備忘録

Webページ開設しました → 初心者備忘録: http://www.ka-net.org/

全体表示

[ リスト ]

[PowerPoint]カウントダウンタイマーの作成

先日Microsoftのテンプレートサイトを見ていて、たまたま見つけたのが下記のテンプレート。


よくあるタイマー用のテンプレートと同じくVBAでコードが書かれているんだろうと思いきや、VBAは使われていない様子。(けれどカウントダウンはちゃんとされる)
イメージ 1

イメージ 2

どこで時間計測しているんだろうと思って色々と設定を見た所、アニメーションが実行されるタイミングの遅延で設定しているようだった。
イメージ 3

なるほど!!こんな方法もあるのか!!と、ちょっと勉強になりました。
そこで、マクロでこういったアニメーション(?)によるタイマーを作成すればちょっと便利かも…などと思って作成したのが下記マクロです。
【PowerPoint VBA】カウントダウンタイマーを作成する
動作としては下記のようになります。

1. 選択したシェイプ(時間表示の元となるシェイプ)をコピーします。
2. 1.のシェイプと同じ場所に時間を表示するシェイプを貼り付けていきます。(1シェイプ/分)
3. 2.のシェイプにアニメーションを設定し、開始タイミングを「直前の動作の後」、遅延時間を「60秒」に設定します。
Sub CriateTimer()
  Dim myShape As ShapeRange
  Dim myShapeTop As Double
  Dim myShapeLeft As Double
  Dim intSlideNum As Integer
  Dim lngMaxMin As Long
  Dim i As Long
  
  '--------------------------------------------
  '必要に応じて下記変更
  '--------------------------------------------
  'コピー元オートシェイプがあるスライド番号
  intSlideNum = 1
  'カウント時間(分)
  lngMaxMin = 10
  '--------------------------------------------
  
  With ActiveWindow.Selection
    'オートシェイプの選択判定
    If .Type <> ppSelectionShapes Then
      MsgBox "オートシェイプを選択してください。", vbCritical
      Exit Sub
    Else
      myShapeTop = .ShapeRange.Top
      myShapeLeft = .ShapeRange.Left
      'オートシェイプをコピー
      .Copy
    End If
  End With
  
  For i = lngMaxMin To 0 Step -1
    Set myShape = ActivePresentation.Slides(intSlideNum).Shapes.Paste
    With myShape
      'テキストがないオートシェイプの場合は削除して終了
      If .HasTextFrame = 0 Then
        .Delete
        MsgBox "テキストがありませんでした。", vbCritical
        Exit Sub
      Else
        '位置設定
        .Top = myShapeTop
        .Left = myShapeLeft
        
        'テキスト設定
        .TextFrame.TextRange.Text = Format(TimeSerial(0, i, 0), "hh:mm:ss")
        
        'アニメーション設定
        If i = lngMaxMin Then
        'アニメーション開始時のみクリックでスタート
          '開始:クリック時
          .AnimationSettings.AdvanceMode = ppAdvanceOnClick
        Else
          '開始:直前の動作の後
          .AnimationSettings.AdvanceMode = ppAdvanceOnTime
        End If
        'タイミング:遅延60秒
        .AnimationSettings.AdvanceTime = 60
        '開始エフェクト:アピール
        .AnimationSettings.EntryEffect = ppEffectAppear
      End If
    End With
    Set myShape = Nothing
  Next
  
  MsgBox "処理が終了しました。"
End Sub

実際にカウントダウン用アニメーションを作成する手順としては下記のようになります。

1. 上記プロシージャを標準モジュールに貼り付けます。
2. スライドにテキストボックス(普通のオートシェイプでも可)を挿入し、「00:00:00」と入力します。(文字の大きさやフォントも設定します。)
※ このシェイプがタイマーの元になります。
イメージ 4

3. 2.のシェイプの書式設定から塗りつぶしを設定します。
イメージ 5

4. 1.のプロシージャ内のintSlideNum(2.でシェイプを挿入したスライド番号)とlngMaxMin(カウントする時間(分単位))を設定します。
5. 2.のシェイプを選択した状態で1.のプロシージャを実行します。
イメージ 6

イメージ 7

6. カウントダウン用アニメーションが設定されるので、スライドショーを実行して動作を確認します。
イメージ 8

上記手順で作成したカウントダウン用アニメーションは、そのスライドをコピーして他のプレゼンテーションファイルにコピーしても動作します。VBAを使わずアニメーションの設定のみで時間計測しているため、このようなメリットがありますが、1分ごとに1シェイプを使用しているのでカウントダウン時間が多ければ多いほど、アニメーションが重くなるデメリットもあります。(分単位ではなく秒単位にしたらさらに重くなりそう…)
とはいえアニメーションによるカウントダウンは割とお手軽ですので、利用する価値はあったりする(多分)のではないかと思います。

http://x7.o-oku.jp/bin/ll?098172303

閉じる コメント(0)

コメント投稿
名前パスワードブログ
絵文字
×
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

閉じる トラックバック(0)

トラックバックされた記事

トラックバックされている記事がありません。

トラックバック先の記事

  • トラックバック先の記事がありません。

.


プライバシーポリシー -  利用規約 -  ガイドライン -  順守事項 -  ヘルプ・お問い合わせ

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事