
Excel VBAについての質問です。
タイトルの通り、指定範囲(Range("A1:AJ58"))を画像で保存するマクロを作成したいです。
保存先はブックと同じパスです。
Chart.Exportで画像通りのエラーが出てしまいます。
'Export'メソッドは失敗しました'Chart'オブジェクト
どのように変更すればよいでしょうか。
よろしくお願いいたします。
Sub PNG出力()
Dim FileSize As Long
Dim pic As ChartObject
Dim picName As String: picName = ActiveWorkbook.Path & "\" & Range("C3") & ".png"
Dim rng As Range: Set rng = Range("A1:AJ58")
'■セル範囲を画像データでコピーする。
rng.CopyPicture
'■指定したセル範囲と同じサイズのpicを新規作成し、保存する。
Set pic = ActiveSheet.ChartObjects.Add(0, 0, rng.Width, rng.Height)
pic.Chart.Export ThisWorkbook.Path & picName 'ここでエラー
FileSize = FileLen(ThisWorkbook.Path & picName)
'■picのFileSizeを超えるまでループする(画像データが出来上がったら終了する)
Do Until FileLen(ThisWorkbook.Path & picName) > FileSize
pic.Chart.Paste
pic.Chart.Export ThisWorkbook.Path & picName
DoEvents
Loop
'■作成完了後、pic削除。
pic.Delete
Set pic = Nothing
End Sub

No.1ベストアンサー
- 回答日時:
こんにちは
エクセルのバージョンによって多少違いがあるみたいですね。
ご提示のコードでは2度保存しているようですが、理由がよくわかりませんね。
従来のエクセルでは図の保存ができなかったので、いろいろな方法が考えられていますが、もしもOffice365をご利用なら、365では「図として保存」がサポートされているようですので、そちらをご利用になるのが宜しいと思います。
(当方、Win10、Excel2019環境なので確認はできていませんが・・)
さて、ご質問の件ですが、ご提示のコードのオリジナル(?)になっていると思われる以下のソースで実行してみたところ、当方の環境では問題なく動作しました。
https://teratail.com/questions/105469
(CopyPictureでエラーがでましたが、フォーマットをbitmapにすることで解決)
どうしても上手くいかない場合は、一旦、xlsxで保存して、zip形式で対象画像を探すという方法もあるようです。(こちらは動作確認していません)
https://www.shegolab.jp/entry/excel-macro-save-i …
遅くなってしまい申し訳ございません。
ご回答ありがとうございます。
図として保存ならできそうですが、やはりマクロにするのは難しそうですね。。。
No.2
- 回答日時:
>picName = ActiveWorkbook.Path & "\" & Range("C3") & ".png"
変数picName はフルパスが設定されていますよね?
>pic.Chart.Export ThisWorkbook.Path & picName 'ここでエラー
Exportする際、頭にパスを追加しているのは何故ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBA 1 2023/04/27 13:37
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
Excel vbaについての質問
Visual Basic(VBA)
-
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
-
4
EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
VBA Shapes コピーと名前
Excel(エクセル)
-
9
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
10
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
11
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
12
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
13
Excel 範囲指定スクショについて Excelで範囲指定してスクリーンショットする機能がありますが
Visual Basic(VBA)
-
14
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
15
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
16
エクセルVBAで埋め込みグラフ(ChartObjects)のアクティブ
Visual Basic(VBA)
-
17
エクセルで作成した画像を保存する方法はありますか
Excel(エクセル)
-
18
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
19
VBAでwebの画像を名前を付けて保存する方法
その他(プログラミング・Web制作)
-
20
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでPDFを作成する際、同じ名...
-
【VBA】Excelの特定範囲のセル...
-
EXCELで昇順並び替えを元に戻す
-
EXCEL のドキュメントの回復に...
-
他のアートボードに同じ位置で...
-
Illustratorでアートボード内だ...
-
Excel のファイルを開くと複数...
-
Excelが開かないんです。
-
イラストレーターで印刷範囲が...
-
トンボ内をpdfに書き出したい
-
エクセル「テンポラリドキュメ...
-
イラレでページ番号をつける方法
-
ワードを開かずにページ数だけ...
-
MS Word:ファイル内のゴ...
-
イラストレータをPDFに変換する...
-
Illustrator 中の要素ごとアー...
-
テレビ会議での自己紹介
-
windows10でのオーバーレイ
-
Illustrator9.0でプリント時の余白
-
wordで保存を押したらドキュメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでPDFを作成する際、同じ名...
-
【VBA】Excelの特定範囲のセル...
-
windowsのイラストレータで作っ...
-
EXCELで昇順並び替えを元に戻す
-
助けてください。エクセルのグ...
-
PDFのデータをフリーのXChenge-...
-
EXCEL のドキュメントの回復に...
-
トンボ内をpdfに書き出したい
-
Illustrator 中の要素ごとアー...
-
Illustratorでアートボード内だ...
-
イラストレーターでオブジェク...
-
イラストレーターで印刷範囲が...
-
イラレでページ番号をつける方法
-
エクセル「テンポラリドキュメ...
-
他のアートボードに同じ位置で...
-
Excel のファイルを開くと複数...
-
windows10でのオーバーレイ
-
CSVのエクセルファイルで ハイ...
-
イラストレータをPDFに変換する...
-
エクセルで特定のファイルだけ...
おすすめ情報
失礼しました。ご指摘ありがとうございます。
パスを追加していない状態で再度試してみましたが、同じエラーがでました。