#【解析屋さんのためのExcelVBA(番外編その2)】PowerPointのスライドを任意のサイズで画像として出力する
Category:ComputerScience
Tags:PowerPoint, VBA
はやし@color_chipsです。
PowerPointって保存時にスライドを一枚ずつ画像形式で出力できる事を知っていますか?
形式は、JPG若しくはPNGだけですが、便利ですよね。
ただ、出力される画像の解像度があまり選べないのが難点です。
というわけで、スライド画像出力を任意の解像度にする方法を調べました。
結論から言うと、
- レジストリをいじる
- VBAでやる
の2パターンだそう。
レジストリはいじりたくないので、VBAでやってみました。
というわけで、ソースコード
Option Explicit
'//[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
'//[[ Function : 全スライドを画像として出力 ]]
'//[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
Sub OutputSlideImage()
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ 変数定義 ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
Dim szPath As String
Dim stPresentation As Presentation
Dim stSlide As Slide
Dim count As Long
Dim i As Integer
Dim width As Integer
Dim height As Integer
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ パラメータ指定 ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
width = 1440 '画像幅
height = 1080 '画像高さ
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ フォルダ指定 ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
szPath = SelectFolderInBrowser()
' フォルダ選択されていなければ終了
If szPath = "" Then
Exit Sub
End If
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ 出力 ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
count = 1
Set stPresentation = ActivePresentation
For Each stSlide In stPresentation.Slides
stSlide.Export szPath & "\Slide" & Right(count + 10 ^ 3, 3) & ".jpg", "JPG", width, height
count = count + 1
Next stSlide
End Sub
'//[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
'//[[ Function : フォルダ選択ダイアログ ]]
'//[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
Private Function SelectFolderInBrowser(Optional vRootFolder As Variant) As String
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ 変数定義 ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
Dim objFolder As Object
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ フォルダ選択ダイアログ ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
Set objFolder = CreateObject("Shell.Application").BrowseForFolder( _
0, _
"出力フォルダ選択", _
&H211, _
vRootFolder)
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
'//[[ 選んだパスを取得 ]]
'//[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]
If Not (objFolder Is Nothing) Then
SelectFolderInBrowser = objFolder.Items.Item.Path
Else
SelectFolderInBrowser = ""
End If
Set objFolder = Nothing
End Function
説明
パラメータ設定で以下の設定をした後、OutputSlideImageを実行してください
- width: 出力画像サイズ(幅)
- height: 出力画像サイズ(高さ)
PowerPointでVBAの使い方は、こちらをどうぞ。
【解析屋さんのためのExcelVBA(番外編)】PowerPointVBAで指定フォルダ内の画像を整列して並べる:ComputerScience - color pencils
制限事項
- 画像サイズは、3072×3072まで(それ以上大きいサイズ指定しても、このサイズになります)
- 縦横比率は保たれず、指定したサイズに伸縮されます
といわけで、目的だったパワポのスライドの任意画像解像度出力が出来ました。