• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件付マクロの質問です)

エクセルのマクロでフォルダ内の写真データを挿入表示する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、特定フォルダ内の写真データを挿入表示する方法について質問です。
  • フォルダ内には、4桁の名前の写真データが多く格納されています。
  • マクロを作成したが、該当する番号の写真データがフォルダ内にない場合にマクロを終了させる方法がわかりません。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

回答内容の使い方が間違っています ActiveSheet.Pictures.Insert("C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg").Select でエラーになるということは "C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg" というファイルが存在しないということです マクロの冒頭に dim sName as String sName = "C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg" if Dir(sName) = "" then   Exit Sub End if としてみましょう

noname#256688
質問者

お礼

おかげさまで希望どおりのマクロ動作をさせることができました。 勝手な質問にもかかわらず、分かりやすいご説明や詳しいコードまで 教えていただきたいへん感謝しております。ありがとうございました。 これを機にさらにマクロの勉強に励んで行きたいとおもいます。 重ね重ねありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>条件付マクロの質問です 質問のようなのは、「条件付マクロ」とは言わないだろう。そういう概念機能も無いだろう。VBAには条件判定は出てくるのが当たり前で、これを言うなら、すべてのVBAがそうなる。 ーー #1のご解答を受けて、自分でその路線で、やってみたのか。 (A)やり方がわかりません (B)その通りやったのですがうまくいきません など書いてから、情況を説明すべきだろう。 その結論ぐらい、解答のお礼の印に書くべきだろう。自分のコードを補足欄に長々と書いたりして要るが。 ーー 小生は、質問のコードを多少変えてやってみて、#1解答の路線で、下記でシートに写真ガ出ることを確認した。 後は自分で修正すること。 Sub test01() fd = CurDir MsgBox fd fn = "C:\Documents and Settings\XXX\My Documents\My Pictures\" Pn = "PC210325.JPG" MsgBox fn & Pn If Dir(fn & Pn) = "" Then MsgBox Pn & " の画像ファイルが存在しません" Exit Sub End If Worksheets("Sheet1").Select ThisWorkbook.Worksheets("Sheet1").Activate Worksheets("Sheet1").Range("B2").Select 'ActiveSheet.Pictures.Insert("C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg").Select ActiveSheet.Pictures.Insert(fn & Pn).Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 300 End Sub 問題は上記のfnとPnの指定だけだ。うまくいかない場合は、存在しないものを指定していないか、余分な文字やもれている文字が無いか。 これを参考にして、たとえエラーが出ても、自分であれこれやって見て、修正するべきだ。 前のステップでmsgBoxを入れて確認などが有効と思う。 質問なのだから、そのまま丸写しで動くコードを求めるな。

noname#256688
質問者

お礼

早速のご指摘、ご指導ありがとうございました。教えていただいたプログラムを自分なりに確認し動作のチェックを行ったところ、うまく動作させることができました。また、メッセージを表示させることはたいへん参考になりました。ここまでご丁寧にコードを書いていただきたいへん感謝いたします。 また、質問の仕方や丸写しなどに対する非常識な行いに対してお詫びもうしあげます。 このたびはたいへんありがとうございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

If Dir("フルパスのファイル名")="" Then  Exit Sub End If で、判定できませんか? > 条件でif~thenなどあるようなのですが上手く行きませんでした。 どうやったら上手くいかないのかを記載しないと、誰にも判らない…。

noname#256688
質問者

お礼

早速の御回答ありがとうございました。教えていただきましたことを参考にして再度自分なりに確認して行きたいと思います。 大変感謝しております。ありがとうございました。

noname#256688
質問者

補足

早速のご回答ありがとうございます。確かに自分の内容を記載しないと分からないです。たいへん失礼いたしました。 教えて頂いた構文を下記のように入れてみたのですが、「実行時エラー 1004 PicturesクラスのInsertプロパティを取得できません 」というウインドウが出てしまいます。 --------------------------------------------------------- Sub Auto_Open3() ' ' Auto_Open3 Macro ' If Dir("C:\Users\SUZUKI\Desktop\777\") = "" Then Exit Sub End If Worksheets("画像").Select ThisWorkbook.Worksheets("画像").Activate Worksheets("画像").Range("B2").Select ActiveSheet.Pictures.Insert("C:\Users\SUZUKI\Desktop\777\" & Worksheets("検索出力表").Range("B3").Value & ".jpg").Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 300 End Sub ---------------------------------------------------------- ちなみに内容は、「検索出力表」というシート内のB3セルに写真フォルダ内の四桁 番号を入れて、存在すれば別シート「画像」シートにそれを図として挿入 するのが目的です。 だた、存在しない場合上記のようなエラーウインドウが出てしまうので、それを 防ぐために存在しない場合はマクロを強制終了させたいということで ございます。

関連するQ&A