<Dir関数でファイルの存在をチェックする>
こんにちは、 AB型の変わり者Ken3です。 ^^^^^^^^^^^^^^^^ 今回は、 Dir関数でファイルの存在をチェック してみたいと思います。 /* * 1.ファイルが存在しないとエラーメッセージが表示される */ 前回、 /vba/backno/vba002.html で、 AccessからExcelを起動して、データをセットするサンプルを書きました。 In message "[VBAで楽しく No.002] - AccessからExcel出力", mag2 ID 0000099159さん wrote... > oApp.Workbooks.Open FileName:="D:\vba002\TYPE.xls" で、 D:\vba002\TYPE.xls のExcel元ファイルを開いているんだけど このファイルが存在しないと、 当然ながら、エラーメッセージが表示されてしまいます。 まぁ、いいんじゃない?システムのメッセージが出ても。 よくない、よいないよ。。。 /* * 2.dir関数を使用して、ファイルの存在をチェックする */ ファイルが存在するかチェックする方法として、 Dir関数が存在します。 Dir("ファイル名") で見つからなかった時に長さ0の文字列を返してくるので、 If Dir("D:\vba002\TYPE.xls") = "" Then でチェックできます。 Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click Dim oApp As Object '*3ファイルの存在をチェックする If Dir("D:\vba002\TYPE.xls") = "" Then MsgBox "D:\vba002\TYPE.xls を 確認して下さい" Exit Sub '途中で抜ける End If Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'Only XL 97 supports UserControl Property oApp.UserControl = True '*1↓頭にCreateObjectで作成した変数を追加しただけ oApp.Workbooks.Open FileName:="D:\vba002\TYPE.xls" '^^^^ '*2 Range("A1").Value ="XXXX" でデータをセットする oApp.Range("B4").Value = Me![ID] oApp.Range("C4").Value = Me![Name] oApp.Range("B6").Value = Me![Address] oApp.Range("D7").Value = Me![TEL] Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub *3 みたいな感じでファイルの存在をチェックできます。 へぇ〜、よかったね。 でも、 D:\vba002\TYPE.xls 固定なんでしょ? Dドライブの無いマシーンにインストールする時は、 プログラム直さないと動作しないジャン? oApp.Workbooks.Open FileName:="D:\vba002\TYPE.xls" を oApp.Workbooks.Open FileName:="C:\vba002\TYPE.xls" とかにね。 それに、ルートのすぐ下はイヤな感じなので深いフォルダーを作りたいよね。 C:\顧客管理\資料作成\名簿フォーマット.xls とかにしたいし。 そうすると、 "D:\vba002\TYPE.xls" をVBA内から探して、変更するんだぁ。 こんな小さなプログラム内でも3ヶ所もあるよ。 そうですねぇ、、、 /* * 3.Access Dir関数を使ったサンプル */ 固定処理の話と対策は次回にまわして、 (おいおい、またかよ、、、) Dir関数を使ったサンプル を下記に載せます。何かの参考になれば幸いです。 また、 動作するサンプルを http://www.ken3.org/vba/lzh/dir97.lzh からダウンロード可能にしました。使ってみてください。 例)引数でディレクトリとファイル名を受け取り、メモ帳に書き出す。 ---- Public Sub FileListToMeno(strDIR As String, strPATTERN As String) On Error GoTo Err_FileListToMeno Dim MyName As String Dim MyPath As String '¥を付けるか判断する。 If Right(Trim(strDIR), 1) <> "\" Then strDIR = Trim(strDIR) & "\" '\を追加する End If 'ディレクトリが存在するか、チェックする。 If Dir(strDIR) = "" Then MsgBox strDIR & "ディレクトリが見つかりません" Exit Sub End If '検索するパターンを渡す MyPath = Trim(strDIR) & Trim(strPATTERN) MyName = Dir(MyPath, vbNormal) ' 最初のファイル名を返します。 If MyName = "" Then MsgBox "該当ファイルが一件もありません" Exit Sub End If Call Shell("NOTEPAD.EXE", 1) 'メモ帳起動、、、これでいいの? '秀丸を起動するには??どうするの? SendKeys MyPath & " ファイル一覧 " & Date SendKeys "{ENTER}" Do While MyName <> "" ' ループを開始します。 SendKeys MyName 'ファイル名を送信 SendKeys "{ENTER}" MyName = Dir ' 次のファイル名を返します。 Loop Exit_FileListToMeno: Exit Sub Err_FileListToMeno: MsgBox Err.Description Resume Exit_FileListToMeno End Sub ----- 枠外解説・グチ -- SendKeys使っちゃダメでしょ、、 SendKeys使っちゃダメでしょ、、、 えっ、なんで? Shellで簡単に立ち上げて、データ送ろうとしてるけど、 キー操作やその他で、アクティブなウインドウが切り替わったら、 どうするの?、、、 テストだから、いいじゃん、、おおめに見てよ。 その姿を新人さん達が見習ったら、どうするの? はい、、、すみません。。。 /* * 4.終わりの挨拶 */ 今回は、Dir関数のチョットした説明でした。 次回は、Constの説明と起動場所をやってみたいと思います。 何か質問などあったら、掲示板に書いてもらえるとうれしいです 掲示板 : http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi *質問に回答形式だとネタ考えないでいいので、ラクできます(笑) 三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]