「powerpoint vba sliderange.export bmp」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
スライドをBMPファイルとして保存する、PowerPoint VBA(Visual Basic for Applications)のコードを探している方による検索です。
PowerPointでは、SlideオブジェクトのExportメソッドや、
SlideRangeオブジェクトのExportメソッドを使うと、
個々のスライドを、BMPファイルに限らずJPG・GIF・PNGなどの画像ファイルとして保存することができます。
選択されているスライドを画像として保存するサンプルマクロ
以下のようなマクロで、アクティブなプレゼンテーションファイルが存在するフォルダーに、プレゼンテーションファイルと同じ名前のフォルダーを作成して、そのフォルダーに選択されているスライドを画像として保存することができます。
Const EXT = "bmp" '画像の拡張子
Dim sld As Slide
Dim fd_path As String '画像用フォルダーのフルパス
Dim n As Long 'ファイル名(拡張子なし)の文字数
If ActiveWindow.Selection.Type = ppSelectionNone Then Exit Sub
With ActivePresentation
n = Len(.Name) - InStrRev(.Name, ".")
fd_path = .Path & "\" & Left(.Name, n)
End With
'プレゼンテーションファイルと同じパスに
'プレゼンテーションファイルと同じ名前のフォルダーが'存在しない場合に
'画像保存用フォルダーを作成する
If Dir(fd_path, vbDirectory) = "" Then MkDir fd_path
For Each sld In ActiveWindow.Selection.SlideRange
With sld
.Export _
FileName:=fd_path & "\" & .SlideIndex & "." & EXT, _
FilterName:=EXT
End With
Next sld
サンプルマクロの解説
保存したい画像の種別は、定数・EXTに拡張子を指定することで行うようにしています。
Const EXT = "bmp" '画像の拡張子
プレゼンテーションファイルと同じパスに、プレゼンテーションファイルと同じ名前のフォルダーを作成するために、フォルダーのフルパスを変数・fd_pathに格納しておきます。
With ActivePresentation
n = Len(.Name) - InStrRev(.Name, ".")
fd_path = .Path & "\" & Left(.Name, n)
End With
Dir関数で画像保存用のフォルダーが存在しているかを調べて、存在していない場合にはMkDir関数を使ってフォルダーを作成します。
If Dir(fd_path, vbDirectory) = "" Then MkDir fd_path
この処理は、PowerPoint VBA固有のものではなくExcel VBAなどでよく行われるものです。
元々フォルダーが存在していた場合は、そのフォルダーに画像が保存され、その際、万一フォルダー内に同じ名前のファイルが存在していた場合は、上書き保存が行われますからご注意ください。
画像保存用フォルダーが準備できたら、選択されているSlideに対してFor Each~Nextループを回して、
For Each sld In ActiveWindow.Selection.SlideRange
Slide.Exportメソッドで画像保存用フォルダーに、スライド番号をファイル名にして、定数・EXTで指定されていた種別で保存を行っています。
With sld
.Export _
FileName:=fd_path & "\" & .SlideIndex & "." & EXT, _
FilterName:=EXT
選択されているスライドを保存するので、何も選択されていない状態のときは、マクロを終了するように変数宣言の直後に以下の処理を入れています。
If ActiveWindow.Selection.Type = ppSelectionNone Then Exit Sub
- Newer:かなり霧が晴れた
- Older:VBAでドロップダウンリストを作成する
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » スライドを画像として保存するPowerPointマクロ