PowerPoint VBAでクリップボード画像を保存する方法と修正ポイント

Visual Basic

PowerPoint VBAでクリップボードの画像を保存する場合、Excel VBAとはクリップボードの扱い方が異なるため、同じコードをそのまま使うことはできません。特に、Application.ClipboardFormatsはExcel専用であり、PowerPointでは利用できません。

PowerPointでのクリップボード操作

PowerPointでは、クリップボードから画像を取得する場合、DataObjectGetFromClipboardを使うのが一般的です。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用に書き換えることで、問題なく画像を保存できるようになります。

コメント

タイトルとURLをコピーしました