アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)ファイル保存したいのですが、プログラム方法がわかりません。

勝手で申し訳ございませんが、以下の条件で実現する方法をご存知の方
教えて頂ければと思います。
・VBAだけで実現したい(VBAから別ソフトを起動するなどはNG)
・クリップボードに画像コピーは前工程で終わっている(画像保存だけしたい)


何卒よろしくお願いいたします。

A 回答 (1件)

jpg で保存する方法です。


空のシートを作る部分だけ、若干手間を取ります。
ファイル名は面倒なので、日付時間値にしてしまいました。

'//
Sub PictureSave()
 Dim arBuf As Variant
 Dim cb As Variant
 Dim sh As Worksheet
 Dim pic As Object
 Dim objCht As Object
 Dim Fname As String
 Dim formatDate As String
 
 Set sh = ThisWorkbook.Worksheets.Add '空のシート
 arBuf = Application.ClipboardFormats
 If Not IsArray(arBuf) Then MsgBox "クリップボードに何もありません。": Exit Sub
 For Each cb In arBuf
  If cb = xlClipboardFormatBitmap Then
   sh.Paste
   Exit For
  End If
 Next
 Set pic = sh.Pictures(1)
 If pic Is Nothing Then Exit Sub
 With pic
  Set objCht = ActiveSheet.ChartObjects.Add(.Left, .Top, .Width, .Height).Chart
 End With
 formatDate = Format$(Now(), "yymmddhhmms")
 Fname = Application.GetSaveAsFilename(formatDate, "画像ファイル(*.jpg), *.jpg", , "画像の保存")
 If VarType(Fname) = vbBoolean Then Exit Sub
 pic.Copy
 objCht.Paste
 objCht.Export Fname, "jpg"
 pic.Delete
 sh.ChartObjects(1).Delete
 Application.DisplayAlerts = False
 sh.Delete 'シート削除
 Application.DisplayAlerts = True
End Sub
    • good
    • 10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A