[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.003 Dir関数でファイルの存在をチェックする

Dir関数でファイルの存在をチェックする

メルマガ発行内容

<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):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]