[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセル内の画像をJPG保存』(harukaze)
エクセルシートに挿入された画像を取り出し、フォルダにJPGとして保存したいと考えています。
次のようなコードを見つけて一部加工しマクロを実行しましたが、保存されるJPGに画像はなく真っ白な状態となってしまいます。 しかし、ステップイン操作でマクロを実行した場合は、正確に作動します。
ご教授お願いいたします。
Sub 保存()
'ワークシートの全オブジェクトをループ For Each tobj In ActiveSheet.Shapes
If tobj.Type = 13 Then 'オブジェクトが画像ならType=13となる。 tobj.CopyPicture Fname = tobj.Name 'オブジェクトの名前を取得 ACWidth = tobj.Width 'オブジェクトのサイズを取得(高さ) ACHeight = tobj.Height 'オブジェクトのサイズを取得(高さ)
'オブジェクトとほぼ同サイズの空のグラフを一時的に作る
Set TCht = ActiveSheet.ChartObjects.Add(0, 0, ACWidth * 0.8, ACHeight * 0.8).Chart
TCht.Paste 'グラフに画像をペーストする。
TCht.Export Filename:=ThisWorkbook.Path & "\Pic\" & Fname & ".jpg", filtername:="JPG" TCht.Parent.Delete 'グラフを削除する。 End If Next
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
試しに[DoEvents]でも入れてみたら、どうにかしてくれるかもですね...
Sub 保存() For Each tobj In ActiveSheet.Shapes If tobj.Type = 13 Then tobj.CopyPicture DoEvents '★追記してみる Fname = tobj.Name ACWidth = tobj.Width ACHeight = tobj.Height Set TCht = ActiveSheet.ChartObjects.Add(0, 0, ACWidth * 0.8, ACHeight * 0.8).Chart TCht.Parent.Activate '★それでもダメならコイツも追記してみる TCht.Paste DoEvents '★追記してみる TCht.Export Filename:=ThisWorkbook.Path & "\" & Fname & ".jpg", filtername:="JPG" TCht.Parent.Delete End If Next End Sub
(白茶) 2021/10/13(水) 10:53
白茶さま
ご教授ありがとうございます!
>TCht.Parent.Activate '★それでもダメならコイツも追記してみる
↑こちらのコードを追加しましたら、正確に作動しました。
助かりました。本当にありがとうございます。 (harukaze) 2021/10/13(水) 11:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.