次の方法で共有


【質問事項】VBAのマクロ機能を用いた画像圧縮が正常に出来ないことがある

質問

2021年5月18日火曜日 8:12

現在、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のままとなってました。
「画像データ切り取り」→「画像として貼り付け」を行うと圧縮作業は出来ますが、非常に多くの画像データがあり非効率な作業となっております。

「マクロを用いての完結が出来ないか」、もしくは「まとめての画像圧縮が出来ないか」どうか調査及び検;してみましたが、良い結果が得られていない状態となっております。
そのため、この度皆様の知恵をお借りしたく質問させていただきました。
お手数ですが、良い解決方法や思いつく内容等がありましたらご教授いただけますと幸いです。

以上、宜しくお願い致します。

すべての返信 (2)

2021年5月18日火曜日 8:38

しゃっくりさん、今晩は。

問題の原因かどうかはわかりませんが、ちょっと教えてください。

「私のPCから「書式」→「図の圧縮」を試みてみましたが、」と記載されていますが、これは、「問題のC_FIleを「私のPC」に保存して「書式」→「図の圧縮」を試みてみました」という事ではなくて、「共有フォルダ(又は最近はやりのクラウドとか?)に保存されている問題のC_Fileに私のPCからアクセスして「書式」→「図の圧縮」を試みてみました」という事でしょうか?

それから、もう一つ。確か、解像度については変な記事を見たことがあったなぁ、と探してみたら、こんな記事(次のURL)がありました。既定の解像度の話なので、関係あるのかないのか、良く分かりませんし、しゃっくりさんのPCではうまくいったのですから関係ない可能性大だと思いますが、ご参考まで。
https://blog.nyanco.me/excel-default-resolution-96ppi-notwork/


2021年5月20日木曜日 2:42

しゃっくりさん、こんにちは。

グラフを作るところからの検;は出来ておりませんが、③の画像の圧縮過程について適当な10個程度の画像を貼り付けて検;したところ、小生のPC(Windows10;Excel2016)では問題なく圧縮ができたようで、ファイルサイズが小さくなりました。他の方のPCでの動作不良?の検;まではできていないのですが、先の返信でご紹介した96ppiを規定の解像度に設定できないという現象は小生のPCでも見られるものの、圧縮はできたようですので、先の小生の返信は的外れではないかと判断せざるを得ませんので、撤回します。

【質問も撤回。ここから追記;2021/05/20 18:10頃】
その後、グラフを作ったところから検;してみたところ(グラフは手動で作成)、今度は、他の方のPCの実行結果と同様、96ppiに圧縮できなくなりました。ちなみに、グラフの画像のほかに適当な画像を加えてみたところ、グラフの画像は圧縮できないものの適当な画像は圧縮ができました。何なんでしょう?もう少し落ち着いて調べてみる必要がありそうです。

【更に追記;2021/05/20 22:10頃】
なお、手動で96ppiにしようとしてもできていないようです。
詳細設定で、330ppiを既定の解像度にしてみたり、「復元用の編集データを破棄する」にチェックを入れて見たりしてみましたが、ダメでした。また、小生のPCでも、先の返信でご紹介した「既定の解像度を96ppiにセットしようとすると高品質になってしまって96ppiを既定の解像度とすることができない」という具合になっています。しゃっくりさんのPCではどうでしょうか?