プロが教える店舗&オフィスのセキュリティ対策術

excelにて。VBAで、フォルダ内の画像を一覧の横に表示させたい。

過去、似たような質問があり、ここに書かれているVBAを試したところ、やりたい事とかなり近かったです。
http://oshiete.goo.ne.jp/qa/2880877.html
しかしコレの場合、ある一つのセルへの入力に対して、一つの画像を表示する、といった形になっています。私がやりたいのは、さらに以下のようなことです。

1.あるシートのA列に、画像名の一覧がある。(マックス500行程度)
2.マクロを実行すると、A列と同名の画像が、あるフォルダから呼び出されてB列に表示される。
 (A2と同名の画像がB2へ、A3と同名の画像がB3へ、ということ)

※参照フォルダは固定でOKです。
※表示サイズはサムネイル程度の小さなものでOKです。前述リンク先のVBAのように、任意指定できれば尚可。


前述のリンク先にあるVBAを自分で書き換えられればよいのですが、どうすればセルを可変にできるのかわかりません。(それとも下方向に向けて反復するといった形に書き換えるんですかね??)

当方はVBAできません。ネットで拾ったものをコピペして使っているレベルです。
バージョンは2002です。よろしくお願いいたします。

A 回答 (3件)

ご質問に書かれた


>あるシートのA列に、画像名の一覧がある。(マックス500行程度)

のようになっていない,たとえばA1やA2などのセルが空欄になっていて画像名が記入されていない状況が想定されます。


変更前:
if dir(p & h) <> "" then

変更後:
if h <> "" and dir(p & h) <> "" then

としてみます。



まだダメだったときは。
どんなデータも一つも通らずダメなのか,特定のセル番地,特定の画像名などでダメなのか,エラーの出る詳しい状況を何でも全て教えてください。
VBE画面でデバッグを行い,エラーが出た時点でhやらpにどんな内容が実際に入っていたのかを確認し,教えてください。
また念のためご利用のエクセルのバージョンについてもきちんと教えてください。



#基本ですがもしも「デバッグとは何ですか,どうしたらいいですか」について,やり方を知らない判らないときは必要に応じて別途ご相談を投稿してみてください。
    • good
    • 0
この回答へのお礼

ありがとうござました。
まさにそれ、空欄セルがあったからでした。
こちらのマヌケなミスで、お時間おかけして申し訳ありませんでした。

見事に画像が現れて、感動いたしました。
どうもありがとうございました!

お礼日時:2010/05/14 16:40

>当方はVBAできません。

ネットで拾ったものをコピペして使っているレベルです。

ってことですから

>p = "c:\あるフォルダ\"

もそのままのような気がする・・・

この回答への補足

わはは。さすがにそれはありません!

補足日時:2010/05/14 16:35
    • good
    • 0

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)」にデバックの黄色が出ているのですが、何が問題なんでしょうか????

補足日時:2010/05/12 17:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています