データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
こんにちは。
同じユーザーとしてマイクロソフト製品のサポートを行う独立アドバイザーのYuki M.です。
VBA専用のフォーラムがございますため、下記へご投稿してみてください。
https://social.msdn.microsoft.com/Forums/ja-JP/...
どうぞ宜しくお願い致します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
現在、VBAのマクロ機能を用いて、自動入力された数値データに対するグラフの作成及び画像貼り付けを行うソフトを作成しています。
マクロの流れとしては以下の通りです。
① 指定のCSVファイル(以降「B_File」)を開いてデータを読み出し、マクロ機能のあるファイル(以降「A_File」)の所定のセルへデータを自動入力
② 「A_File」へ入力されたデータに応じてグラフが自動作成され、そのグラフを画像(JPEG)データとして「A_File」の別シートに貼り付け
(詳細は下記のコード参照)
Sheets("A_File").ChartObjects("グラフ1").CopyPicture
Sheets("別シート").Select
Range("B8").Select
ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, displayasicon:=False
③ ②の作業を複数回行い、全ての画像データの貼り付けが完了した後、「電子メール用に圧縮」として圧縮
(詳細は下記のコード参照)
Dim oneShp As Shape
Dim pasteLeft As Double, pasteTop As Double
For Each oneShp In ActiveSheet.Shapes
If oneShp.Type = msoPicture Then
oneShp.Select
Application.SendKeys "%e~" '[電子メール用 (96 ppi)]を選択
Application.CommandBars.ExecuteMso "PicturesCompress"
End If
Sleep 10
Next
(※①~③を繰り返し行い、最終的にレポートソフトを作るようなものをイメージしていただけますと幸いです)
上記の流れに応じて10数枚以上のシートを作成した後に、他のExcelファイル(以降「C_File」)へ作成したシートのコピーを行い、
全てのコピーが完了すると「C_File」を閉じて作業を終了します。
今回問題となっている点ですが、私のPCで実行した場合は正常に圧縮処理され容量が1M以内に収まっているのに対し、
他の方のPCで実行した場合は正常に圧縮処理されず、HDとして保存されているため容量が10Mを超えています。
(OSやOfficeなどの環境については同じものであることは確認出来ております)
正常に圧縮処理されなかった「C_File」に対し、私のPCから「書式」→「図の圧縮」を試みてみましたが、正常に処理されずHDのままとなってました。
「画像データ切り取り」→「画像として貼り付け」を行うと圧縮作業は出来ますが、非常に多くの画像データがあり非効率な作業となっております。
「マクロを用いての完結が出来ないか」、もしくは「まとめての画像圧縮が出来ないか」どうか調査及び検証してみましたが、良い結果が得られていない状態となっております。
そのため、この度皆様の知恵をお借りしたく質問させていただきました。
お手数ですが、良い解決方法や思いつく内容等がありましたらご教授いただけますと幸いです。
以上、宜しくお願い致します。
データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
こんにちは。
同じユーザーとしてマイクロソフト製品のサポートを行う独立アドバイザーのYuki M.です。
VBA専用のフォーラムがございますため、下記へご投稿してみてください。
https://social.msdn.microsoft.com/Forums/ja-JP/...
どうぞ宜しくお願い致します。
Yuki M. 様
こんにちは。
VBA専用のフォーラムへの案内ありがとうございます。
そちらへ同様の質問を行うようにいたします。
以上、宜しくお願い致します。