マンガでよめる痔のこと・薬のこと

エクセルのマクロでご質問です。
C:\Users等の場所のとあるフォルダに、7777.jpgなどの4桁の名前の写真データが多く格納されており、そのフォルダから特定セルに写真データの番号を入力してシートに挿入表示させるマクロを作ったのですが、
フォルダ内に該当番号ファイルがある場合は問題無いのですが、フォルダに該当する番号の写真データ(番号)が無い場合にマクロを終了させたいプログラムが分かりません。条件でif~thenなどあるようなのですが上手く行きませんでした。とくにメッセージなど高度なことは無くても構いませんので、単に該当番号がフォルダに無い場合マクロを強制終了させる構文などお分かりでしたらぜひ教えていただきたく存じます。大変お手数ですが何卒よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

回答内容の使い方が間違っています



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

としてみましょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/18 23:13

>条件付マクロの質問です


質問のようなのは、「条件付マクロ」とは言わないだろう。そういう概念機能も無いだろう。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を入れて確認などが有効と思う。
質問なのだから、そのまま丸写しで動くコードを求めるな。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/18 23:20

If Dir("フルパスのファイル名")="" Then


 Exit Sub
End If

で、判定できませんか?


> 条件でif~thenなどあるようなのですが上手く行きませんでした。

どうやったら上手くいかないのかを記載しないと、誰にも判らない…。

この回答への補足

早速のご回答ありがとうございます。確かに自分の内容を記載しないと分からないです。たいへん失礼いたしました。

教えて頂いた構文を下記のように入れてみたのですが、「実行時エラー 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セルに写真フォルダ内の四桁
番号を入れて、存在すれば別シート「画像」シートにそれを図として挿入
するのが目的です。
だた、存在しない場合上記のようなエラーウインドウが出てしまうので、それを
防ぐために存在しない場合はマクロを強制終了させたいということで
ございます。

補足日時:2011/12/18 13:39
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/18 17:35

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


人気Q&Aランキング