
はじめまして。
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- Excel(エクセル) B列に、A列の数字が偶数の場合は1減算した数字、奇数の場合はそのまま数字を自動表示したい 4 2022/04/16 12:01
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelで数字を入れたら対応する図を呼び出したい
Excel(エクセル)
-
エクセル フォルダの画像を画像名で検索して貼り付け
Excel(エクセル)
-
エクセルのセルに指定画像(.jpg)を自動で貼り付けたいです。
Excel(エクセル)
-
-
4
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
5
エクセルに張り付けた写真のファイル名が見たい
Microsoft ASP
-
6
エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法
Excel(エクセル)
-
7
エクセル ハイパーリンクで画像を表示
その他(Microsoft Office)
-
8
エクセルのマクロで特定フォルダ内のJPGファイルを検索して開きたいので
Excel(エクセル)
-
9
EXCELでデータベース作って、写真を入れたフォルダへリンク貼りたい
Excel(エクセル)
-
10
条件に一致したときに画像を表示したいのですが・・。
Excel(エクセル)
-
11
マクロで画像挿入→エラー「リンクされたイメージを表
Excel(エクセル)
-
12
Excelのパスが格納されている列の隣の列に画像を自動で表示させたい
その他(Microsoft Office)
-
13
エクセル マクロ 相対パスから画像を読み込みたいです。
その他(Microsoft Office)
-
14
エクセルで次々と画像を表示させたい
Excel(エクセル)
-
15
エクセル関数で画像を呼び出す方法ありますか?
Windows Vista・XP
-
16
Excelの画像をセルとして参照する
Excel(エクセル)
-
17
VBA フォルダ名と画像ファイル名取得
Visual Basic(VBA)
-
18
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
19
EXCELで別シートのセル内に画像の貼り付けをしたいのですが・・・
Excel(エクセル)
-
20
【マクロ】でセルと同名の画像を表示させる
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
男性の方に質問です。 バックで...
-
彼女が感じやすくて可愛い
-
女性が喘いでいるときの男性の...
-
フェラチオは妻の義務ですか?...
-
風俗ってどこまでの接客をします?
-
高校生です。彼氏の前で初めて...
-
男性に質問です! 電話だけで勃...
-
夫婦の夜の営みについてです。 ...
-
彼氏と毎日セックスするのは異...
-
キスすれば相手を好きでなくて...
-
男性に質問です。 デリヘルって...
-
彼と体の相性が良すぎて悩んで...
-
兄妹や姉弟で、キスやエッチし...
-
ソープランドについて
-
初体験って気持ちいいの? 男の...
-
実家住まいの場合Hはホテル以外...
-
もし週1しか恋人と会えなかった...
-
ふぇらでイカセテくれる うまい...
-
彼女がフェラをしてくれません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
男性の方に質問です。 バックで...
-
彼女が感じやすくて可愛い
-
風俗ってどこまでの接客をします?
-
夫婦の夜の営みについてです。 ...
-
高校生です。彼氏の前で初めて...
-
女性が喘いでいるときの男性の...
-
フェラチオは妻の義務ですか?...
-
初体験って気持ちいいの? 男の...
-
彼氏と毎日セックスするのは異...
-
兄妹や姉弟で、キスやエッチし...
-
男性に質問です! 電話だけで勃...
-
彼と体の相性が良すぎて悩んで...
-
男性に質問です。 デリヘルって...
-
彼女がフェラをしてくれません。
-
実家住まいの場合Hはホテル以外...
-
もし週1しか恋人と会えなかった...
-
キスすれば相手を好きでなくて...
-
ソープランドについて
-
彼氏が前戯をしてくれない
おすすめ情報