VBAからGDI+を使う資料集
inet上の達人の方々から御教示いただいたコードを少しアレンジさせてもらっています(切り貼りとも言います)。
  1. ホーム
  2. EMF
  3. セル範囲をemfで保存2


エクセルで選択範囲をemf形式で保存(その2)

emfの読み方を調べていて、stdPictureを作成しなくても、ファイル保存できる事がわかりました。API関数、定数、構造体は省略します。
なお、セル以外に、ワークシートに貼り付けた写真とか、図形(複数同時も可)なども同様に保存可能です。


Sub clip2emf()
    Dim hSrcMetaFile As Long '複製元メタファイルのハンドル
    Dim hFileMetaFile As Long
        
    If OpenClipboard(0) Then
      hSrcMetaFile = GetClipboardData(CF_ENHMETAFILE)
      ' ハンドルを複製してから使用する
      hSrcMetaFile = CopyEnhMetaFile(hSrcMetaFile, vbNullString)
      CloseClipboard
    End If
    If hSrcMetaFile = 0 Then
      MsgBox "emf取得に失敗"
      Exit Sub
    End If
     'ファイルに保存
    hFileMetaFile = CopyEnhMetaFile(hSrcMetaFile, "c:\temp.emf")
    'メタファイルのクローズ
    DeleteEnhMetaFile hFileMetaFile
    DeleteEnhMetaFile hSrcMetaFile
End Sub