

VB2005 の初心者です。
iniファイルで指定したフォルダ(パス)を読み込んで処理をしたいのですが、指定したパスが誤っている場合は、どのようにチェックすれば良いのでしょうか。
下記サンプルのとおり、System.IO.Path.GetInvalidPathChars()
でチェックする方法があるようですが、ヘルプには「ファイル名やディレクトリ名としては無効なすべての文字が含まれるかどうかは、保証されません。」とあるようです。
実際、"Cd:\<>Work\Test.txt" というパスにすると、チェックはスルーしてしまいました。
Dim filepath As String = "C:\<>Work\Test.txt"
Dim invalidPathChars As Char() = System.IO.Path.GetInvalidPathChars()
For Each invalidChar As Char In invalidPathChars
If filepath.IndexOf(invalidChar) > -1 Then
Console.WriteLine("使用できない文字 " & invalidChar.ToString() & " が含まれています。")
End If
Next
誤ったパスを完全にチェックする方法はあるのでしょうか。
何かヒントになることでも良いので、皆様の知恵をお借りできれば幸いです。
よろしくお願い致します。
No.5ベストアンサー
- 回答日時:
#2です
>無い場合、IO.Directory.CreateDirectory で作成しようとすると、"Cd:\Projects" というフォルダは作成できないのでエラーとなってしまうのです。
「CreateDirectory」の戻り値が「DirectoryNotFoundException」で有ればパスが間違えていると判断できると思いますが。。。
http://msdn.microsoft.com/library/ja/default.asp …
余り深く考えず、「CreateDirectory」がエラーで失敗すると言う事はパスに何らかの問題があると考えられますから、そこで判断するだけでも十分かと思います。
再度の回答、本当にありがとうございます!
CreateDirectory の戻り値が返ってくるとは、調査不足でした。
ただ、実験してみると、戻り値は NotSupportedException でしたが、これでエラーが拾えることが確認できました。
初歩的な質問でしたが、本当にありがとうございました!
No.4
- 回答日時:
ファイルの有無を確認し、なければ作成するとのことですが、ファイルの有無の確認はどのメソッドを使用していますか?
File.Existメソッドを使用しえいる場合は、存在しないパスが指定されてもエラーで落ちることはないはずですが?
よろしかったら、その辺の詳細を教えていただけますか?
この回答への補足
回答ありがとうございます!
おそらく、質問内容のソースは HIROs-NET 様のページを参考にさせていただいたものです。
質問の説明が誤っており、大変申し訳ありません。
System.IO.Directory.Exists でフォルダの有無を確認して、無い場合、IO.Directory.CreateDirectory で作成しようとすると、"Cd:\Projects" というフォルダは作成できないのでエラーとなってしまうのです。
フォルダの有無の確認と、パス自体があり得るパスかどうかの確認は別物ですよね??
完全なパスのチェックはできるのでしょうか??

No.3
- 回答日時:
ファイルの存在確認
System.IO.File.Exists(filePath)
ディレクトリの存在確認
System.IO.Directory.Exists(dirPath)
上記でfalseが返って来た場合はパス自体が間違っているとみなして、パスから再設定させてはいかがですか?
パスの再設定にはFolderBrouwserDialogなどを利用して、確実に存在するパスを指定させれば大丈夫かと。
回答、ありがとうございます!
FolderBrouwserDialog というのがあるのですね。
早速調べてみます。
貴重な情報ありがとうございました。
No.2
- 回答日時:
質問者様のお考えだと、たとえパスに問題が無くても指定されたiniファイルの存在までは判らないですよね。
もっと単純に「ファイルが存在する=パスに不正な文字が無い」と考えて見ては如何でしょう。
ファイルの有無を確認するのであれば、Fileクラスの「Exists メソッド」を使えば出来ます。
Dim filepath As String = "C:\<>Work\Test.txt"
If File.Exists(filepath) Then
Console.WriteLine("ファイルが見つかりました。")
else
Console.WriteLine("ファイルが見つかりません。")
End If
こんな感じで如何でしょう。。。
回答ありがとうございます!
ANo.1 の補足にも記載させていただいたとおり、初回はフォルダが無いため作成し、2回目以降は指定したフォルダで処理(ログをはく)をししたいのです。しかし、 "Cd:\Projects" というフォルダを作成しようとするとエラーとなります。
やはり、フォルダが存在しないなら、エラーとするしかないのでしょうか。
No.1
- 回答日時:
ファイルの有無を確認するのではダメなのでしょうか?
If Not My.Computer.FileSystem.FileExists("ファイルパス") Then
''ファイルが存在しない
End If
など
この回答への補足
早速の回答、ありがとうございます。
質問内容の説明不足で申し訳ありません。
ファイルの有無を確認して、無ければ作成するのですが、その際、パスが誤っているとエラーで落ちてしまうため、最初にパスをチェックしたいのです。
不可能であれば、ファイルの有無の確認をして、無ければエラーとするしかないのかな・・・と思っていますが。
やはり、完全にパスをチェックする方法はないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
VBA★PDFをPDFアプリで印刷し...
-
環境変数の設定について...
-
VBAとResgen.exeを使用して、re...
-
Like演算子で、[と]を文字とし...
-
ExcelVBA:自己のBook名を取得...
-
1行単位のデータをテキストファ...
-
VBAでの共有パスにつきまして
-
EXCEL(VBA)で指定フォルダ内の...
-
リストボックスにファイル名の...
-
batファイルについてです
-
ブラウザからファイルパスを取...
-
エクセルVBAで一つ上の階層...
-
スクリプト を教えてください
-
指定したフォルダ内の最新ファ...
-
VB2008 INIファイル読み込みに...
-
ExcelVBAの使い方 ¥の使い方...
-
xcopyコマンドの進行状況を表示...
-
Eclipse
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでパワーシェルを実行したい...
-
ExcelVBAの使い方 ¥の使い方...
-
C#でのProcess.Startと変数path
-
ExcelのVBAで上書き保存を確...
-
開いているファイルを削除し、...
-
アプリケーションのインストー...
-
【VBA】複数のtxtファイルから...
-
EXCEL(VBA)で指定フォルダ内の...
-
fopenでのパス指定
-
パスワード保護されたExcelファ...
おすすめ情報