Home » パワーポイントマクロ・PowerPoint VBAの使い方 » マスター » プレゼンの進行度合いを示すプログレスバーを作成するパワポマクロ

プレゼンの進行度合いを示すプログレスバーを作成するパワポマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010

Insert a progress bar to powerpoint presentation」という記事で、PowerPointにプログレスバーを作成するVBA(Visual Basic for Applications)マクロが紹介されています。

個々のスライドに、プレゼンテーションの進行度合いを表すプログレスバーを作成してくれるマクロです。

便利なマクロなのですが、少し改良したいと感じる部分もあります。

一つは、プログレスバーの背景色です。
プログレスバーと同系色の薄い色が背景色として設定されているほうが、よりプログレスバーらしく感じられるのではないかと思いました。

もう一つは、プログレスバーの色や高さなどの指定箇所です。
コードの中でプログレスバーの色や高さが直接指定されていますが、定数を定義してプロシージャの上のほうで変更しやすくしておきたいと感じました。

[スポンサードリンク]

基本的考え方は元のマクロと同じですが、いくつか手をいれたマクロをご紹介しておきます。


▼プログレスバーを作成するマクロ
Sub プログレスバーを作成する()

 Const r As String = "00"  '色・RGB値のR
 Const g As String = "99"  '色・RGB値のG
 Const b As String = "00"  '色・RGB値のB
 Const pbH As Long = 20   '高さ
 Const pbBG As Single = 0.6 '背景の透過性

 Dim i As Long
 Dim s As Shape

 On Error Resume Next

 With ActivePresentation
  '背景 ProgressBarBG の設定
  .SlideMaster.Shapes("ProgressBarBG").Delete
  Set s = .SlideMaster.Shapes.AddShape( _
   Type:=msoShapeRectangle, _
   Left:=0, _
   Height:=pbH, _
   Top:=.PageSetup.SlideHeight - pbH, _
   Width:=.PageSetup.SlideWidth)
  With s
   .Fill.ForeColor.RGB = _
    RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
   .Fill.Transparency = pbBG
   .Line.Visible = msoFalse
   .Name = "ProgressBarBG"
  End With

  'プログレスバー ProgressBar の設定
  For i = 1 To .Slides.Count
   .Slides(i).Shapes("ProgressBar").Delete
   Set s = .Slides(i).Shapes.AddShape( _
    Type:=msoShapeRectangle, _
    Left:=0, _
    Height:=pbH, _
    Top:=.PageSetup.SlideHeight - pbH, _
    Width:=i * .PageSetup.SlideWidth / .Slides.Count)
   With s
    .Fill.ForeColor.RGB = _
     RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
    .Line.Visible = msoFalse
    .Name = "ProgressBar"
   End With
  Next i
 End With

End Sub

はじめの3行
 Const r As String = "00"
 Const g As String = "99"
 Const b As String = "00"
で、プログレスバーの色R・G・Bそれぞれの値を「00」から[FF]の16進の値で指定できます。

次の
 Const pbH As Long = 20
で、プログレスバーの高さを、次の
 Const pbBG As Single = 0.6
で、プログレスバーの背景色の透過性・透過度合いを指定できます。透過性は、数値が「1」に近いほど、透過の度合いが大きく薄い色となります。

 With ActivePresentation
  .SlideMaster.Shapes("ProgressBarBG").Delete
に続く、
  Set s = .SlideMaster.Shapes.AddShape( _
   Type:=msoShapeRectangle, _
   Left:=0, _
   Height:=pbH, _
   Top:=.PageSetup.SlideHeight - pbH, _
   Width:=.PageSetup.SlideWidth)
  With s
   .Fill.ForeColor.RGB = _
    RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
   .Fill.Transparency = pbBG
   .Line.Visible = msoFalse
   .Name = "ProgressBarBG"
  End With
の部分が、プログレスバーの背景を作成している箇所です。

  Set s = .SlideMaster.Shapes.AddShape( _
   Type:=msoShapeRectangle, _
とスライドマスターに四角形のシェイプを挿入するときに、
   Left:=0, _
   Height:=pbH, _
   Top:=.PageSetup.SlideHeight - pbH, _
   Width:=.PageSetup.SlideWidth)
場所やサイズを指定しています。
ここで、定数「pbH」を使って高さや上からの位置を指定しています。

つづく
   .Fill.ForeColor.RGB = _
    RGB(CInt("&H" & r), CInt("&H" & g), CInt("&H" & b))
   .Fill.Transparency = pbBG
の部分で、定数「r」「g」「b」を使って色を指定して、定数「pbBG」で透過性を指定しています。

最後に
   .Name = "ProgressBarBG"
名前を「ProgressBarBG」と指定しています。

同じ名前のシェイプが存在しているとエラーとなるので、最初に
 .SlideMaster.Shapes("ProgressBarBG").Delete
と「ProgressBarBG」を削除しています。

また「ProgressBarBG」という名前のシェイプが存在しないときに「ProgressBarBG」を削除しようとするとエラーとなってしまうので、これを回避するために変数宣言の直後で
 On Error Resume Next
としています。

そのあとのFor ~ Next文の中の処理は、個々のスライドにプログレスバーを作成している箇所です。

ここは、先に行ったスライドマスターへのプログレスバーの背景の作成処理と、基本的考え方や流れは同じです。

違うのは個々のスライドに作成するために全体が
  For i = 1 To .Slides.Count
とループ処理に入って処理対象が個々のスライドになり、作成するシェイプの名前が「ProgressBar」になっていることと、プログレスバーの色指定後に透過性の指定を行っていないことです。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » マスター » プレゼンの進行度合いを示すプログレスバーを作成するパワポマクロ

TrackBack:0

TrackBack URL

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » マスター » プレゼンの進行度合いを示すプログレスバーを作成するパワポマクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.