2014年1月5日日曜日

PowerPointのスライドにプログレスバーを付加するマクロ2

いろいろとアイデアが湧いてきたので,改良してみました。

マクロを実行すると,フォームが表示され,そこから色や位置,高さ(幅)などを設定できます。
プログレスバーは上下だけでなく,左右にも設定可能にしました。
また,最初のタイトルページに付加するかしないかの設定もできます。
かなり汎用的に使えるようになりました。

とりあえず,サンプルデータをアップしたので,ダウンロードしてみてください。

ProgressBar_sample.pptm

マクロの実行で,mainというマクロを実行すれば,OKですよ。



2014年1月4日土曜日

PowerPointのスライドにプログレスバーを付加するマクロ

あけましておめでとうございます。

正月番組に飽きたので,新年早々ですが,ちょっと便利なマクロ「PowerPointのスライドにプログレスバーを付加するマクロ」をお教えします。

プレゼンを見ていて,あとどれくらいスライドがあるのかなぁと思うことがあります。ページ数を表示させることもできますが,もっとかっこよくしたい。
そこで,プログレスバーを表示できたらよいのではと考えました。

全部スライドができてから一つ一つ図形を挿入していくのは大変な作業ですし,後からスライドを変更したいと思ってもできません。
そんなときには,マクロを使えばよいのです。

だれか作っていないかなぁと探したら,ありましたよ。
もともとは,Insert a progress bar to powerpoint presentationという記事のマクロを改良したようです。

早速使ってみましたが,とてもいいです。
挿入位置がスライドの最下部に固定されているので,デザインによっては最上部にもできたらいいなあと思い,再改良してみました。

まず,パワポでマクロを使う方法は,こちらを見てください。
下記のコードを「開発」リボンのVisual Basic Editorに貼り付けて実行します。
実行すると,プログレスバーの位置を聞いてきますので,上部なら「はい」,下部なら「いいえ」ボタンをクリックします。
プログレスバーの色やサイズは,マクロの上の方に記述されているので,その数値を変更します。

Macでも動くのかは確認していません。自己責任でご使用お願いします。<m(__)m>

Sub MakeProgressBar()
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 = 10 '高さ
Const pbBG As Single = 0.6 '背景の透過性
Dim i As Long
Dim s As Shape
Dim wTop As Long 'プログレスバー位置
Dim rc As Integer
On Error Resume Next
rc = MsgBox("プログレスバー位置はどこにしますか?" & vbCrLf & "上部(はい) 下部(いいえ)", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
wTop = 0
Else
wTop = ActivePresentation.PageSetup.SlideHeight - pbH
End If
With ActivePresentation
'背景 ProgressBarBG の設定
.SlideMaster.Shapes("ProgressBarBG").Delete
Set s = .SlideMaster.Shapes.AddShape( _
Type:=msoShapeRectangle, _
Left:=0, _
Height:=pbH, _
Top:=wTop, _
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:=wTop, _
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
view raw ProgressBar.bas hosted with ❤ by GitHub