• 締切済み

エクセル★画像選択のVBAコード

いつも参考にさせて頂いております。 リンク先の画像貼付まではうまく行くのですが 貼り付けた画像のセレクト方法を教えてください。 VBAコード Range("a1").Select Sheets("sheet2").Select Sheets("sheet1").Pictures.Insert Cells(2, 2) Sheets("sheet1").select 質問内容 シート1のA1に貼り付けられた画像を選択したいのですが・・・? ActiveSheet.Shapes("Picture 10").Select               ↑ このコードでは画像のナンバーが変わるとエラーとなってしまいます。 どうぞ宜しくお願いいたします。

みんなの回答

  • cisco33
  • ベストアンサー率0% (0/0)
回答No.3

>このコードでは画像のナンバーが変わるとエラーとなってしまいます。 A1セルの画像にこだわるのならこれまでの回答で示されたとおりと思いますが、画像ナンバーが変更になるためのエラー回避なら ActiveSheet.Shapes("Picture 10").Select のかわりに、 ActiveSheet.drawingObject.Select で選択してはどうでしょうか。 ただし、ほかにオブジェクトがある場合はそれも含まれてしまいますので注意が必要です。

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

エクセルのシートに貼り付けた画像は 確かにSheets("sheet1").Pictures.Insert Cells(2, 2) で、B2のTop,Leftに表示されますが、セルB2の属性として登録されるようなもので無いようです。通り掛かりの雨宿りの人みたいなもので、その家のファミリの人のようなものではない。 Range("B").InsPicSource(架空)のようなプロパティが使えるように、画像ファイル名をセル属性として登録させてくれればよいが、そういう考えは採られていない。 #1のご回答を少し変えて Sub test02() Dim pict As Picture For Each pict In ActiveSheet.Pictures If pict.TopLeftCell.Address = "$G$5" Then MsgBox pict.Name End If Next pict End Sub を実行すると、初めはピクチャ名が(私の場合)「Picture 8」と表示されました。 しかし画像の位置を動かすと、MsgBoxで表示がありません。 ーー ですからある行の情報として、画像ファイル名を文字列で持ち、 画像は strJpg=cells(i,"G") Pictures.Insert(strjpg).Select のようにして、ファイル名がほしいときは、I列を検索し、対応するG列を見るということで解決するのはどうでしょう。 そしてセルの高さでは画像ファイルの表示は無理(小さくなりすぎる)だと思うから、クリックしたら、その行分だけの画像を表示することにする。前の表示分を消去するすることを考える必要もあると思う。

ha-texi-
質問者

お礼

非常に細かな説明ありがとうございます。 初心者な者ですのでがんばって解読して行きたいとおもいます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

For Each ~ Nextで条件に合致するものを探す方法ではいかがでしょうか Sub Macro1() Dim pict As Picture  For Each pict In ActiveSheet.Pictures   If pict.TopLeftCell.Address = "$A$1" Then    pict.Select   End If  Next pict End Sub

ha-texi-
質問者

お礼

早速の回答 ありがとうございます。

関連するQ&A

専門家に質問してみよう