
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。
Visual Basic(VBA)
-
4
ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています
Visual Basic(VBA)
-
5
VBA 最終行まで数式をコピーする
Visual Basic(VBA)
-
6
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
7
このマクロの説明文を教えてほしいです。
Visual Basic(VBA)
-
8
vba 「インデックス有効範囲ではありません。」のメッセージの対処方法を教えてください。
Visual Basic(VBA)
-
9
動きっぱなしです。止め方とプロシージャの間違いを教えて下さい!
Visual Basic(VBA)
-
10
VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「"」付にならないよ
Visual Basic(VBA)
-
11
vbaを早くしたい
Visual Basic(VBA)
-
12
VBAでのMATCH関数
Visual Basic(VBA)
-
13
Excel VBAでAA(BBB) → BBB.AA に置換したい
Visual Basic(VBA)
-
14
VBAについて教えてください
Visual Basic(VBA)
-
15
[Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。
Visual Basic(VBA)
-
16
vbaの計算 if elseと範囲について
Visual Basic(VBA)
-
17
Excel VBAのデバッグ
Visual Basic(VBA)
-
18
ListBox1をClickしたときのイベント
Visual Basic(VBA)
-
19
VBA コードの意味を教えて下さい。
Visual Basic(VBA)
-
20
FileSearch2007に変わる構文について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAで、1つのエクセルで、2つの...
-
5
EXCEL VBAにて動的にCheckBOXを...
-
6
Excel VBA 複数選択したリスト...
-
7
数式が消える
-
8
ユーザーフォーム「frm_基本❶」...
-
9
VBAを使いシート間で貼り付け
-
10
Worksheet_Change
-
11
Excel VBA オブジェクトマクロ ...
-
12
Edge操作のアプリが例外発生に
-
13
空白のセルを変更しようとした...
-
14
VBAでのループ順序について
-
15
Excelのマクロについて教えてく...
-
16
エクセルのマクロについて教え...
-
17
改ページ
-
18
フォントの大きさ
-
19
同じ作業を複数のシートに実行...
-
20
エクセルVBAを動かすノートPC...
おすすめ情報
公式facebook
公式twitter
失礼しました。ご指摘ありがとうございます。
パスを追加していない状態で再度試してみましたが、同じエラーがでました。