課題・悩み「PowerPointのスライドに作成日を入力するのが面倒」
解決策「PowerPointのスライドマスタに今日の日付を入力するVBAマクロのコード」を解説
PowerPointには、スライドマスターというテンプレートを作成する機能があり、この機能を用いることで、日付やページ数が指定したスライドに自動入力されるようになります。
ただ、スライドを作成するたびに、いちいちスライドマスターに日付を手入力するのは面倒。
そこで、1クリックで今日の日付を入力できるVBAコードを作成しました。
【PowerPointのスライドマスタに今日の日付を入力するVBAマクロのコード】を図解で解説しています。
VBAマクロファイルを配布中。
以下のボタンよりダウンロードしてください。
PowerPointのスライドマスターに今日の日付を自動挿入するVBAマクロのコード
このVBAマクロは、PowerPointのスライドマスター1の2番目のレイアウトを使用して新しいスライドを作成し、そのスライド内の日付プレースホルダーに現在の日付を設定するためのものです。
Sub InsertDateInSecondLayoutOfFirstMaster()
Dim presentation As Presentation
Dim customLayout As CustomLayout
Dim newSlide As Slide ' Slideの型宣言を正しく大文字で始める
Dim placeholderShape As Shape
Dim currentDate As String
Dim i As Integer
' 現在の日付を取得
currentDate = Format(Now, "yyyy/mm/dd")
' アクティブなプレゼンテーションを取得
Set presentation = ActivePresentation
' スライドマスター1の2番目のレイアウトを取得
Set customLayout = presentation.Designs(1).SlideMaster.CustomLayouts(2)
' 新しいスライドを追加
Set newSlide = presentation.Slides.AddSlide(presentation.Slides.Count + 1, customLayout) ' "newlide" を "newSlide" に修正
' 新しいスライド内の日付プレースホルダーを検索し、日付を設定
For i = 1 To newSlide.Shapes.Count
Set placeholderShape = newSlide.Shapes(i)
If placeholderShape.Type = msoPlaceholder Then
If placeholderShape.PlaceholderFormat.Type = ppPlaceholderDate Then
placeholderShape.TextFrame.TextRange.Text = currentDate
Exit For
End If
End If
Next i
End Sub
全体の処理の概要
現在の日付を取得します。
アクティブなプレゼンテーションとスライドマスター1の2番目のレイアウトを特定します。
新しいスライドを追加し、そのスライド内の日付プレースホルダーに日付を設定します。
処理ごとの解説
現在の日付を取得
システムの現在の日付を yyyy/mm/dd 形式で取得します。
currentDate = Format(Now, "yyyy/mm/dd")
プレゼンテーションとレイアウトを取得
アクティブなプレゼンテーションを特定し、スライドマスター1の2番目のレイアウトを取得します。
Set presentation = ActivePresentation
Set customLayout = presentation.Designs(1).SlideMaster.CustomLayouts(2)
新しいスライドを追加
取得したレイアウトを使用して新しいスライドを追加します。
Set newSlide = presentation.Slides.AddSlide(presentation.Slides.Count + 1, customLayout)
日付を設定
新しいスライド内の日付プレースホルダーを探し、そこに現在の日付を設定します。
For i = 1 To newSlide.Shapes.Count
...
Next i
注意点
VBAマクロで実行した操作は元に戻せないので、作業を行う前にプレゼンテーションのバックアップを取ることをお勧めします。
マクロを実行すると、スライドが追加されます。
大量のデータがある場合、処理に時間がかかる可能性があります。
必要な環境設定
VBAマクロを実行するには、PowerPointでマクロが有効になっている必要があります。
セキュリティ上の理由から、マクロは標準的に無効化されていることが多いので、マクロを有効にする設定を行う必要があるかもしれません。
これはPowerPointのオプションやセキュリティ設定で行えます。
コードのカスタマイズ箇所
このコードは、スライドのレイアウトに合わせてカスタマイズすることができ、特定のプレゼンテーションに対して柔軟に対応することが可能です。
また、日付のフォーマットも必要に応じて変更することができます。
提供されたVBAコードをご自身の環境に合わせて変更する必要がある主要な箇所についての解説を以下にまとめました。
デザインの選択
プレゼンテーションには複数のデザインが含まれている場合があります。
適切なデザインを選択するためには、この部分を変更する必要があります。
Designs(1)
変更前
Set customLayout = presentation.Designs(1).SlideMaster.CustomLayouts(2)
変更後
Set customLayout = presentation.Designs([適切なデザインのインデックス]).SlideMaster.CustomLayouts(2)
例
Set customLayout = presentation.Designs(2).SlideMaster.CustomLayouts(2)
レイアウトの選択
各スライドマスターには複数のレイアウトが含まれています。
特定のレイアウトを選択するためには、この部分を変更する必要があります。
CustomLayouts(2)
変更前
Set customLayout = presentation.Designs(1).SlideMaster.CustomLayouts(2)
変更後
Set customLayout = presentation.Designs(1).SlideMaster.CustomLayouts([適切なレイアウトのインデックス])
例
Set customLayout = presentation.Designs(1).SlideMaster.CustomLayouts(3)
日付のフォーマット
日付の表示形式を変更する場合は、この部分を調整します。
例えば、月/日/年の形式や他のロケールに基づくフォーマットに変更できます。
Format(Now, "yyyy/mm/dd")
変更前
currentDate = Format(Now, "yyyy/mm/dd")
変更後
currentDate = Format(Now, "[新しいフォーマット]")
例
currentDate = Format(Now, "mm/dd/yyyy")
まとめ:
このスクリプトを使用することで、プレゼンテーションを常に最新の状態に保つことができます。
特に、日付を手動で更新する必要がある場合に便利です。
プレゼンテーションの準備がより効率的かつ効果的になります。
コメント