PowerPoint VBAでクリップボードの画像を保存する場合、Excel VBAとはクリップボードの扱い方が異なるため、同じコードをそのまま使うことはできません。特に、Application.ClipboardFormatsはExcel専用であり、PowerPointでは利用できません。
PowerPointでのクリップボード操作
PowerPointでは、クリップボードから画像を取得する場合、DataObjectやGetFromClipboardを使うのが一般的です。Microsoft Forms 2.0 Object Libraryを参照設定すると、MSForms.DataObjectを使って画像を取得できます。
サンプルコード例
以下はPowerPoint VBAでクリップボードの画像をファイルとして保存する例です。
Sub SaveClipboardImage()
Dim objData As New MSForms.DataObject
Dim strFilePath As String
strFilePath = "C:\Temp\ClipboardImage.png"
' クリップボードからデータを取得
objData.GetFromClipboard
' 画像が含まれている場合のみ処理
If objData.GetFormat(2) Then ' 2 = CF_BITMAP
Dim pic As stdole.IPictureDisp
Set pic = objData.GetData(2)
SavePicture pic, strFilePath
MsgBox "画像を保存しました: " & strFilePath
Else
MsgBox "クリップボードに画像がありません。"
End If
End Sub
ポイントと注意点
- PowerPointではExcelの
ClipboardFormatsは使用できない。 - Microsoft Forms 2.0 Object Libraryの参照設定が必要。
- 保存形式は
SavePictureでBMPやPNG形式を指定可能。
まとめ
PowerPoint VBAでクリップボードの画像を保存するには、Excel専用のコードをそのまま使うのではなく、MSForms.DataObjectを使う方法が適切です。クリップボード形式の判定や画像保存の処理をPowerPoint用に書き換えることで、問題なく画像を保存できるようになります。

コメント