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

Anonymous
2021-05-18T05:10:23+00:00

現在、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 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2021-05-18T07:53:47+00:00

こんにちは。
同じユーザーとしてマイクロソフト製品のサポートを行う独立アドバイザーのYuki M.です。
VBA専用のフォーラムがございますため、下記へご投稿してみてください。
https://social.msdn.microsoft.com/Forums/ja-JP/...
どうぞ宜しくお願い致します。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2021-05-18T08:18:15+00:00

    Yuki M. 様

    こんにちは。

    VBA専用のフォーラムへの案内ありがとうございます。

    そちらへ同様の質問を行うようにいたします。

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

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません