• ベストアンサー

マクロ 画像名を指定させない方法

Excelファイルにある画像を全てjpegに変換するマクロを作成 していますが、初めてのマクロで戸惑っています。 どうも画像ごとにもともと名称が付けられているようで、 マクロで設定された名称と違うと正しく動かないようです。 当初画像指定したマクロ(一部xxで伏せています): ActiveSheet.Shapes.Range(Array("xxxxx")).Select これを、例えばシート名が変わっても対応できるsheets(1).select のように、マクロで画像名が変わってもで対応できるよう 設定方法をご教示頂けますでしょうか? どうぞ宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kon555
  • ベストアンサー率51% (1849/3570)
回答No.2

「ファイルにある画像全て」なら、一々名称を取得しない方法もありますね。 Sub アクティブシートの画像全てに処理()  Dim shp As Shape  For Each shp In ActiveSheet.Shapes   If shp.Type = msoPicture Then     shp.〇〇〇〇   End If  Next shp End Sub  これはアクティブなシート上の全図形をループで処理しています。 「For Each shp In ActiveSheet.Shapes」 の部分です。  そしてその図形が画像だったときに一定の処理を行います。 「If shp.Type = msoPicture Then」 の部分です。 「 shp.〇〇〇〇」のところに任意の処理を入れれば(今回ならjpegに変換するコード)、画像が全て処理されます。  画像を一律に処理しますので、そうした用途の場合は便利です。 参考ページ https://www.relief.jp/docs/excel-macro-delete-images.html

happyskip
質問者

お礼

早速のご回答をありがとうございました! なるほど、すべての画像指定も出来るのですね。 奥が深い… 大変助かりました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

画像の名前を取得してXXXXXの部分に入れてやればいかがですか。 Sub Test() Dim spShape As Shape Dim SName As String For Each spShape In ActiveSheet.Shapes SName = spShape.name Next spShape ActiveSheet.Shapes.Range(Array(SName)).Select End Sub

すると、全ての回答が全文表示されます。

関連するQ&A