• ベストアンサー

画像を削除したい(VBA)

指定したセルにある画像を削除する様にしたいのですが、 マクロで記録すると、どうしても(Picture 32)のど写真に番号が付いてしまいます。 写真は、その都度変わるので、指定の場所にある例えば、C5セルにある画像だけを消すVBAを教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 2つほどサンプルを。ご参考までに。 ' // C5セル内に画像左上角がある場合は削除 ' // 画像右下がC5セルからはみ出しているかどうかを問わない Sub SampleProc1()   Dim Pic As Picture   For Each Pic In ActiveSheet.Pictures     If Pic.TopLeftCell.Address = "$C$5" Then       Pic.Delete     End If   Next End Sub ' // セルの選択範囲内に完全に含まれる画像を削除 Sub SampleProc2()   Dim Pic As Picture   Dim r  As Range      If UCase$(TypeName(Selection)) <> "RANGE" Then Exit Sub   For Each Pic In ActiveSheet.Pictures     Set r = Range(Pic.TopLeftCell, Pic.BottomRightCell)     If Selection.Address = Union(Selection, r).Address Then       Pic.Delete     End If     Set r = Nothing   Next End Sub

sumi3377
質問者

お礼

大変助かりました。 ありがとうございました

その他の回答 (2)

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

こんな感じでしょうか。ただし画像左上がC5にないと削除されません。 セルを覆い隠すように配置されているなら補足してください Sub Macro() Dim shp As Shape  For Each shp In ActiveSheet.Shapes   If shp.TopLeftCell.Address = "$C$5" Then    shp.Delete   End If  Next shp End Sub

sumi3377
質問者

お礼

大変助かります。 ありがとうございました

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

TopLeftCell で判断してはいかがでしょう?

sumi3377
質問者

お礼

TopLeftCellでも判断できました。 ありがとうございました。

関連するQ&A

  • エクセルVBAのコード

    教えてください。 エクセルでマクロを記録しVBEで編集したりしています。 その画像全てを1度に消去するにはどうしたら良いのでしょうか? やりたい動作は下記です。   シート1に文章と、たくさんの画像が貼ってあります。   画像の全てと、文章の一部を毎月入れ替えます。   シート内に画像がたくさんあり、ひとつひとつ切り取るのは大変です。   そこでシート内の画像全てを一度に切り取るマクロを作りたいのです。 例えば範囲指定してコピーをすると、文章も画像も罫線もコピーされてました。 でも範囲指定して削除をすると画像だけ削除されずに残ってしまいます。 画像だけを切り取りした動作を、マクロで記録して見てみたら、 ActiveSheet.Shapes.Range(Array("Picture 39", "Picture 47","Picture48"))._ Select Selection.Cut となっていました。 Pictre39などと、画像の番号を入れれば切り取りできるのは分かるのですが、 毎月シート内の画像は入れ替えるので、画像番号も変わってしまうと思うのです。 だから、シート内全ての画像を指定して消したいです。 画像の種類はネットでもらったイラストやクリップアートなどです。 購入したVBAの本でも分からないし、ネット検索でも良く分からず・・・ 宜しくお願いします。

  • ExcelVBAで画像をシートに貼り付けたり、張り付いた画像を削除した

    ExcelVBAで画像をシートに貼り付けたり、張り付いた画像を削除したりするとき マクロの自動記録で次のようにしています。 1.貼り付け ActiveSheet.Pictures.Insert(画像ファイル名).Select 2.削除 ActiveSheet.Shapes("Picture n").Select Selection.Cut "Picture n"のnは数値です。この数値がどんどんカウントアップされます。 カウントアップされると、このブックを閉じないで使い続けていると10万でも100万でもカウントアップされてしまうのでしょうか? "Picture n"ではなく、「画像ファイル名」とか、任意に設定した名称で指定することはできないでしょうか? よろしくお願いします。

  • excel VBA で”27行目ごとに3行削除”について

    VBAはまったく初めてです。 早急に作業を行わなければいけないことがでてきたのですが、持ち時間がないので、VBAでできないものかと思いました。 マクロの記録をやってみたのですが、うまくいきません。 記述をする場所はわかります。 毎27行目以降3行を削除していきたいのです。 どう記述していけばいいのか、どなたか教えていただけないでしょうか?

  • VBAマクロで、図形等のオブジェクトを選択(特定)する方法ってありますか

    こんにちは。VBAマクロを少しかじっています。 顔写真付きの従業員の検索システムを作りました。名前を入力(選択)したら、データシートから職員コード、住所、電話番号などの情報を検索し検索画面に表示します。この際、別のシートに顔写真を貼り付けたもの(1セルに1枚。セルに従業員名を入力してある。)から、VLOOKUP関数を使ってセル照会することで、画像も同時に表示することができます。 別の職員に切り換えたり、クリアする場合の画像の処理は、削除用のシートを用意し、そこにセルごと移動し、終了時にシートごと削除する方法をとりました。(当然、確認用のダイアログボックスが表示されます。) 前置きが長くなりましたが、問題は、用済みの画像を選択するプロシージャがあれば、あえて削除用のシートを用意する必要はありません。セルの場合は、Rangeプロパティやcellsプロパティで特定できますが、画像などのオブジェクトをセル番地などを使って特定する方法ってあるのでしょうか。 因みに、画像の選択処理を、マクロ記録でプロシージャを作成したら、 ActiveSheet.Shapes("Picture 1").Select などとなります。 よろしくお願いします。

  • マクロでセルを挿入・削除するには

    excelマクロ(VBA)について質問です。マクロにて指定したセルを挿入・削除したいのですが、挿入・削除するセルの場所ついては、別のセルで指定したいのです。具体的には以下のような感じです。 A   B   C   D  1  □ 2  □ 3 氏名 4  No   太郎 5  1   次郎 6 2   三郎 7 3   四郎 8 4   トメ 9  5   ハジメ A1にて挿入する場所を、B1にて削除する場所を指定したいです。例えば四郎の後ろにセルを挿入してトメの上に五郎と入れたい場合A1にて(挿入したいNo)4を指定・実行するとトメがNo5(B9セル)にずれるといった具合です。削除の場合もB1で4を指定するとトメが削除され、No4(B8)にハジメが上がるという感じです。よろしくお願いします。

  • エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。

    エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。座標の指定方法がいまひとつ分かりません。 マクロの記録で、座標数値の設定は分かるのですが、セルに対しての指定方法が分かりません。 図形をドラッグ指定したA1セルからC1セルまで直線を書きたいのです。セルへの始点終点の指定方法が有るのでしょうか。

  • VBAで、エクセルワークシート上の図を選択・削除したい

    VBAで、ワークシート上の図をすべて選択して削除するのは、どのように書いたら良いでしょうか?実際の図は一つなのですが、オートマクロで記述すると、 ActiveSheet.Shapes.Range(Array("Picture 3").Select のように、番号が変わってしまいます。

  • エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、

    エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、 分からない部分があって困ってます。 (1)挿入したいセルにカーソルを合わせる (2)マクロ  挿入-図-ファイル-図の挿入-図の書式設定-サイズ-30% この作業を覚えさせると以下になりました。 Sub Macro3() ActiveSheet.Pictures.Insert("C:\Documents and Settings\デスクトップ\1.JPG") _ .Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 360# Selection.ShapeRange.Width = 480# Selection.ShapeRange.Rotation = 0# End Sub これだと、写真が指定されてしまいます。 マクロの途中で止まって任意の写真を都度選べるようにできますか? 膨大な量の写真をセルに並べていきたいのです。

  • エクセルマクロ画像挿入について

    はじめまして。 マクロ全くの初心者です。 詳しい方、優しく教えていたたげると幸いです。 エクセル2010または2013でマクロを作成したいと思っています。今までマクロの作成は自動保存?マクロ記録→マクロ記録終了のボタンを使って条件付き書式等しか作成したことがありません。 今回は ピクチャの中のデジカメの画像を、選択したセルに挿入し、サイズを変更したいです。 他社から送られてきたデータにマクロが設定してあり、そのようにしたいです。 挿入したいセルをクリック→マクロの設定されているボタンをクリック→ピクチャが開く→挿入したい画像を選択→選択したセルに画像が挿入され同時にサイズも変更される 自分で少しやってみたのですが、画像を選べません(記録した時の画像が挿入されてしまう)。 ボタンの挿入方法は大丈夫です。 他の方の質問も参考にしたのですがうまくいかなくて、、、どうしたらいいかわかりません。 是非ご教授ください。 よろしくお願い致します。

  • エクセル VBA 画像操作

    VBAについて質問です。 画像を何枚かを重ねて、シート上に置いてあります。 VLOOKUPにて、画像番号を獲得して、その番号の画像を最上面へ移動させたいのですが ActiveSheet.Shapes.Range(Array("Picture 201")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ActiveSheet.Shapes.Range(Array("Picture 221")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ActiveSheet.Shapes.Range(Array("Picture 215")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ("Picture 215")の部分を、セルの値で変更したいのですが どうか、お力お貸しください。 よろしくお願いします。

専門家に質問してみよう