PowerPointでテキストボックスに書かれた日付を一括更新するVBAコード

スポンサーリンク

パワーポイントの日付の更新マクロ

この間から仕事で研修の講師をすることがあって、パワーポイントでスライドを作っていたのですが、何度か使用するスライドの日付を毎回手動で更新していくのが面倒に感じ、一括修正の方法を考えてみました。

マクロを使用することである程度思い通りのものになったので、そのコードをここに記録しておきます。

パワーポイントのマクロの使用方法

パワーポイントのマクロはExcelと異なり、手順を覚えさせることはできないようです。

ショートカットの割り振りもできませんし、イベントプロシージャもスライドショーの起動時や、スライドの表示時の選択しかないので、編集時は使用しにくい印象があります。

マクロを実行するには「開発」タブから「マクロ」を選択するか「VisualBasic」をクリックしてVBEを起動し、マクロのコードを選択して再生ボタンを押すかのどちらかになります。

「開発」タブがない場合は開発タブを表示させる設定手順を行っておきましょう。

スポンサーリンク

今回のパワーポイント用マクロを使う際の準備

テキストボックスの中から必要な部分を抜き出すのに、「テキストボックスの名前」を使用します。
テキストボックスの名前を事前に一定のルールに従って変更しておきます。

テキストボックスの名前の変更はPowerPoint2007の場合「ホーム」→「編集」→「選択」→「オブジェクトの選択と表示」の順に選択し、スライド上の図形の一覧が表示されたところで、選択している図形の名前をダブルクリックして名前を変更します。

今回は一括で変更するテキストボックスの名前を「日付」に指定しておきます。
以下に手順の動画を載せておきます。

名前を変更したテキストボックスをコピーペーストすれば同じ名前のテキストボックスを作ることができます。

複数のテキストボックスの日付を同時に変更したいなら、
①「テキストボックスを作る」→「名前をひとつずつ変更」よりも、
②「先にテキストボックスの名前を変更」→「コピーペースト」の方が時間と手間がかかりません。

パワーポイントで日付を一括で変更するマクロのVBAコード

Sub 日付変更()
Dim d As Date
d = Date
Dim pSlide As Slide, pShape As Shape
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
If pShape.Name = “日付” Then
pShape.TextFrame.TextRange.Text = Format(d, “yyyy年m月d日”)
End If
Next
Next
End Sub

このコードを使用すると「日付」という名前のテキストボックスを全て当日の日付に変更することが可能になります。

また応用として、色々な日付を割り当てるテキストボックスを用意する方法もあります。
下の例では「○日前」と名前を付けたテキストボックスの値を「今日から○日前」にできるVBAコードです。
(○には1-30までの数値が入ります。)

Sub 日付変更2()
Dim d As Date
d = Date
Dim pSlide As Slide, pShape As Shape
Dim x As Long
For Each pSlide In ActivePresentation.Slides
For Each pShape In pSlide.Shapes
If pShape.Name = “日付” Then
pShape.TextFrame.TextRange.Text = Format(d, “yyyy年m月d日”)
End If
For x = 1 To 30
If pShape.Name = x & “日前” Then
pShape.TextFrame.TextRange.Text = Format(d – x, “yyyy年m月d日”)
End If
Next x
Next
Next
End Sub

今回はパワーポイントの全てのスライドに対して一括で処理を行うコードを記載しました。
一つのスライドに対してのみの処理もまた別の機会に記載します。

コメント