• ベストアンサー

エクセルのシートに挿入した画像を別シートに挿入している画像と差し替えマクロ

表題の通り、 ある条件の元、エクセルのシートに挿入した画像の入れ替えが発生するのですが、そのようなマクロを組んだこともなく、 どこから手をつけていいのか分かりません。 シート上に貼り付けただけの画像の差し替えなどはできるのでしょうか?ご教授頂けると助かります。 よろしくお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

http://www.moug.net/faq/viewtopic.php?t=39446 に格好の解説が有るのでは。 ーー 別にイメージ=喩えの話をしてみる。 写真は挿入とは言うが、シートに置かせてもらって、浮いている存在のように思う。その写真の位置は、Top,Lehtの位置を指定できて、別途シートのセルのTop,Leftが捉えられるから、それと関連付けて、繋ぎ止めておく場所はセルに関連付けられるようなイメージです。セルと言う家の門の前に写真を置かせてもらうイメージ。 しかし決して家の中に入りこむ、と喩えられる、セルの属性たる、値やコメントや数式などとは異質の物です。山田さんの家の前においてある写真も、山田さんの家の写真を取り除けと言うわけには行かず、別途何番の写真を取り除けという指示になる。 ーー 2002,2003では マクロの記録は Sub Macroi() ActiveSheet.Pictures.Insert( _ "C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg" _ ).Select End Sub となる。これが2007で動かないかやってみてください。 ーーー シートに2つの写真を貼り付けると Sub test01() Dim shp As Object For Each shp In ActiveSheet.Shapes MsgBox shp.Name Next End Sub を実行すると、Picture 1、Picture 2と返る。これが写真のオブジェクトの名前だ。 これで、Picture 2を削除するのは Sub test02() ActiveSheet.Shapes(2).Delete End Sub 名前で指定するなら Sub test03() ActiveSheet.Shapes("Picture 2").Delete End Sub ーー 上記から、写真以外のオブジェクトがシートに張り付いてないとして セル番地(Top,Leftで座標的な位置指定に使う)ーPicture番号(オブk\ジェクトの名前)ー写真ファイル名ー内容(何の写真か) の対応関係を管理しないと行けなくなると思う。 靴の何番の写真を抹消ー>Picture番号(オブジェクト名)ー>上記コードで抹消となり、入れ替える商品の写真については、新たに上記の4要素を管理する必要が出て来る。挿入すると、Picture番号は変わるので厄介だ。 以上2007でもやってみてください。並みのVBAの経験では難しいと思うな。 ACCESSのテーブルにも商品コードなどと対応して、写真を持てる仕組みがあるので、ACCESSの解説書ででも、そちらも勉強してみてください。

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

その他の回答 (2)

回答No.2

エクセルのバージョンにもよるかも知れませんが、Excel2007では、 画像ファイルの削除、挿入は、マクロとして記録出来ないようです。 (設定などで変更出来るかも知れませんが、基本的に、すぐにマクロを組んじゃう方なので、以下のようなマクロで対応できます) # このマクロから派生させて、もっと良いものは作れると思います。 Sub 差し替え() ' シート内にある画像をすべて削除します。 Dim sel As Shape For Each sel In ActiveSheet.Shapes If sel.Type = msoPicture Then sel.Delete End If Next ' ファイル名で示される画像を挿入します。 ActiveSheet.Pictures.Insert("ファイル名") End Sub このマクロでは、シート内にあるすべての画像を削除してから 指定された画像を挿入する形になります。 上記のselで、sel.AlternativeTextやsel.Nameを使うと、 特定の画像のみを削除することも可能です。

すると、全ての回答が全文表示されます。
  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

>どこから手をつけていいのか分かりません。 マクロ記録をとることから始て見ましょう

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

関連するQ&A