はじめまして。
Excelで、セルに画像名を入力したら指定した場所にフォルダの画像を自動で表示できるようにしたいです
(A1に「空」と入力したらフォルダ内にある「空」という名前の写真が表示される)。
https://oshiete.goo.ne.jp/qa/3749418.html
こちらの回答者様のコードを参考にし自動表示させるところまではいったのですが、わたしの知識では画像が1枚しか表示されず(セルA1しか指定していないのでA1に入力した画像しか表示されません)、また、画像の大きさも指定出来ていないのでサイズが大きいままドンと表示されてしまいます。
A1に入力した画像はB1に、A3に入力した画像はB3に、、というように場所の指定とサイズの指定をしたいのですが調べても調べても解決せず、お力を貸して頂けないでしょうか。
(同じような内容に対する回答のコードも使用させて頂きましたが解決に至りませんでした。)
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
投稿して気づきましたが、先のもの流れでプロセスを書き換えましたが、問題を見つけました。
私自身書いている通り 実行されたセルの検証 > 画像の存在検証 > 指定場所の既存画像を削除 > 指定画像を貼り付け > サイズ調整 > 次の準備
であるべきで、掲示されたコードは、検証前に画像が消去されています。(新規画像が無くても既存画像が削除されます)
下記の様に変更するべきなので、訂正します。
問題の箇所
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "A3" Then '実行されるセル
For Each shp In ActiveSheet.Shapes '表示画像を削除
If Not Intersect(Target.Offset(, 1), Range(shp.TopLeftCell, _
shp.BottomRightCell)) Is Nothing Then
shp.Delete
End If
Next
buf = Dir(path & Target.Value & pic) '画像の存在検証
If buf <> "" Then
修正後
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "A3" Then '実行されるセル
buf = Dir(path & Target.Value & pic) '画像の存在検証
If buf <> "" Then '存在していれば
For Each shp In ActiveSheet.Shapes '表示画像を削除
If Not Intersect(Target.Offset(, 1), Range(shp.TopLeftCell, _
shp.BottomRightCell)) Is Nothing Then
shp.Delete
End If
Next
Target.Offset(, 1).Select '貼り付けセル
質問内容に曖昧な部分があり大変申し訳ありませんでした。
ただ、Qchan1962様に教えて頂いたコード入力したら私が求めていた通りの表示になりました!本当にすごいです…
丁寧なご回答本当にありがとうございました!
とても助かりました。。
教えて頂いたコードを活用し、表を作成していきたいと思います。その中でまた分からないことがあったら質問させて頂きますので宜しくお願い致します。
No.1
- 回答日時:
貼り付ける例が2つ出ていますが、相対位置は分かりますが、どの位あるのか不明です。
また、Resizeを希望されているようですが、どのようなサイズにしたいのかも不明です。
しかし、ご自身で検証などを行っているようなので、そのあたりは、変更してください。
リンク先のものを検証されていると思いますので、構造的なところは変更せず下記に解る範囲のものを
サンプルとして挙げます。
Private Sub Worksheet_Change(ByVal Target As Range)
Const path As String = "C:\hoge\" 'ファイルの格納フォルダ
Const pic As String = ".jpg" '「.(半角)」+ファイルの拡張子"
Dim shp As Shape
Dim buf As String
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "A3" Then '実行されるセル
For Each shp In ActiveSheet.Shapes '表示画像を削除
If Not Intersect(Target.Offset(, 1), Range(shp.TopLeftCell, _
shp.BottomRightCell)) Is Nothing Then
shp.Delete
End If
Next
buf = Dir(path & Target.Value & pic)
If buf <> "" Then
Target.Offset(, 1).Select '貼り付けセル
Set shp = ActiveSheet.Shapes.AddPicture( _
path & buf, _
msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1)
' ここで画像サイズ、セル内配置などを設定する
' 上のmsoTrueをmsoFalseに設定すると縦横比を破棄します
' 画像の縦横比を維持しているので片方で指定で良い
' shp.Height = 50 'resize
shp.Width = ActiveCell.Width
' shp.Height = ActiveCell.Height
Target.Offset(2).Select
Else
MsgBox "指定したファイルがありません"
End If
End If
End Sub
改造と理解が必要なところ
If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "A3" Then '実行されるセル
ここで、実行されるセルのChangeを分岐しています。(今回例はA1 A3 です。)
規則性や範囲などで設定したり、Intersectなどで設定する事が多いと思います。
Target.Offset(, 1) 実行されたセルの1つ右隣
Shapes.AddPictureメソッドのパラメータ
Addpicture(FileName、 linktofile、 savewithdocument、 Left、 Top、 Width、 Height)
shp.Width = ActiveCell.Width
セルに対してサイズ、位置などを合わせるテクニックなど
shp.Height = ActiveCel.Height
If shp.Width >ActiveCell.Width Then
shp.Width = ActiveCell.Width
End If
Worksheet_Changeで画像を取り込む場合の流れは、ほぼ同様の流れになると思います。
実行されたセルの検証 > 画像の存在検証 > 指定場所の既存画像を削除 > 指定画像を貼り付け > サイズ調整 > 次の準備
エラー処理は、ほぼされておらず、buf = Dir(path & Target.Value & pic)くらいです。
同じ、Worksheet_Changeイベントに他の処理などがある場合、適時エラー処理を行ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
【お題】逆襲の桃太郎
【大喜利】桃太郎が1回鬼退治に失敗したところから始まる新作昔話「リベンジオブ桃太郎」にはこんなシーンがある
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
Excelで数字を入れたら対応する図を呼び出したい
Excel(エクセル)
-
エクセル フォルダの画像を画像名で検索して貼り付け
Excel(エクセル)
-
エクセルのセルに指定画像(.jpg)を自動で貼り付けたいです。
Excel(エクセル)
-
-
4
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
5
エクセルに張り付けた写真のファイル名が見たい
Microsoft ASP
-
6
エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法
Excel(エクセル)
-
7
EXCELでデータベース作って、写真を入れたフォルダへリンク貼りたい
Excel(エクセル)
-
8
条件に一致したときに画像を表示したいのですが・・。
Excel(エクセル)
-
9
エクセル ハイパーリンクで画像を表示
その他(Microsoft Office)
-
10
エクセルで次々と画像を表示させたい
Excel(エクセル)
-
11
エクセル関数で画像を呼び出す方法ありますか?
Windows Vista・XP
-
12
EXCELで別シートのセル内に画像の貼り付けをしたいのですが・・・
Excel(エクセル)
-
13
エクセルのマクロで特定フォルダ内のJPGファイルを検索して開きたいので
Excel(エクセル)
-
14
Excelの画像をセルとして参照する
Excel(エクセル)
-
15
【マクロ】でセルと同名の画像を表示させる
その他(Microsoft Office)
-
16
マクロでセルに入れたファイル名の画像を隣のセルに読み込む
その他(Microsoft Office)
-
17
大量の画像へのハイパーリンクを貼りたい
Word(ワード)
-
18
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
19
マクロで画像挿入→エラー「リンクされたイメージを表
Excel(エクセル)
-
20
VBAで選択した画像を貼り付けたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
夫婦の夜の営みについてです。 ...
-
男性の方に質問です。 バックで...
-
彼女が感じやすくて可愛い
-
女性が喘いでいるときの男性の...
-
風俗ってどこまでの接客をします?
-
高校生です。彼氏の前で初めて...
-
もし週1しか恋人と会えなかった...
-
初体験って気持ちいいの? 男の...
-
フェラチオは妻の義務ですか?...
-
キスすれば相手を好きでなくて...
-
彼氏と毎日セックスするのは異...
-
彼と体の相性が良すぎて悩んで...
-
男性に質問です! 電話だけで勃...
-
彼氏のセックスが下手すぎで幻...
-
彼女がフェラをしてくれません。
-
実家住まいの場合Hはホテル以外...
-
ふぇらでイカセテくれる うまい...
-
男性に質問です。 デリヘルって...
-
彼女の膣がガバガバすぎること...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
男性の方に質問です。 バックで...
-
女性が喘いでいるときの男性の...
-
風俗ってどこまでの接客をします?
-
夫婦の夜の営みについてです。 ...
-
彼女が感じやすくて可愛い
-
彼氏と毎日セックスするのは異...
-
高校生です。彼氏の前で初めて...
-
彼と体の相性が良すぎて悩んで...
-
初体験って気持ちいいの? 男の...
-
もし週1しか恋人と会えなかった...
-
男性に質問です! 電話だけで勃...
-
フェラチオは妻の義務ですか?...
-
実家住まいの場合Hはホテル以外...
-
キスすれば相手を好きでなくて...
-
彼女がフェラをしてくれません。
-
男性に質問です。 デリヘルって...
-
彼氏のセックスが下手すぎで幻...
-
セックス中に動画や写真を撮る...
-
抱きしめたときに勃起したあそ...
おすすめ情報