- ベストアンサー
Excel VBAでフォルダ内の画像を一覧表示する方法
- ExcelのVBAを使用して、特定のフォルダ内の画像を一覧表示させる方法について教えてください。
- 過去に似たような質問があり、試したVBAが近い内容でしたが、一つのセルに一つの画像を表示するだけでした。
- 私はさらに、特定のシートのA列に画像名の一覧があり、それに対応した画像を別の列に表示する方法が知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご質問に書かれた >あるシートのA列に、画像名の一覧がある。(マックス500行程度) のようになっていない,たとえばA1やA2などのセルが空欄になっていて画像名が記入されていない状況が想定されます。 変更前: if dir(p & h) <> "" then 変更後: if h <> "" and dir(p & h) <> "" then としてみます。 まだダメだったときは。 どんなデータも一つも通らずダメなのか,特定のセル番地,特定の画像名などでダメなのか,エラーの出る詳しい状況を何でも全て教えてください。 VBE画面でデバッグを行い,エラーが出た時点でhやらpにどんな内容が実際に入っていたのかを確認し,教えてください。 また念のためご利用のエクセルのバージョンについてもきちんと教えてください。 #基本ですがもしも「デバッグとは何ですか,どうしたらいいですか」について,やり方を知らない判らないときは必要に応じて別途ご相談を投稿してみてください。
その他の回答 (2)
- Sinogi
- ベストアンサー率27% (72/260)
>当方はVBAできません。ネットで拾ったものをコピペして使っているレベルです。 ってことですから >p = "c:\あるフォルダ\" もそのままのような気がする・・・
補足
わはは。さすがにそれはありません!
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() dim p as string dim h as range p = "c:\あるフォルダ\" activesheet.pictures.delete for each h in range("A1:A" & range("A65536").end(xlup).row) if dir(p & h) <> "" then with activesheet.pictures.insert(p & h) .name = h .top = h.offset(0, 1).top .left = h.offset(0, 1).left ’不要なら次の2行をコメントアウト .width = h.offset(0, 1).width .height = h.offset(0, 1).height end with end if next end sub など。
補足
早速ありがとうございます。 やってみたところ、マクロを実行するとエラーが出ます。 「With ActiveSheet.Pictures.Insert(p & h)」にデバックの黄色が出ているのですが、何が問題なんでしょうか????
お礼
ありがとうござました。 まさにそれ、空欄セルがあったからでした。 こちらのマヌケなミスで、お時間おかけして申し訳ありませんでした。 見事に画像が現れて、感動いたしました。 どうもありがとうございました!