[三流君] −−> [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でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.003を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・