こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelVBAのDirでスペース含むファイル名

ExcelのVBAで、ファイルが存在するかを調べる為に以下のような記述をしました。

If Dir(filename) = "" Then Err.Raise errnumber

ここで、filenameに通常のファイル名が入る場合は問題ないのですが、filenameにスペースが含まれている場合、明らかにファイルが存在する場合でもErr.Raiseが呼ばれてしまいます。そこで、次の記述を上記のIf文の前に挿入してみました。

filename = """" & filename & """"

ファイル名を「"」で囲めば良いのでは、と考えたのですが、実行すると、

実行時エラー '52'
ファイル名または番号が不正です。

とのエラーが出てしまいます。このように、スペースを含む可能性があるファイル名に対してDir関数を使うにはどのようにすれば良いのでしょうか。よろしくお願いします。

投稿日時 - 2013-10-22 21:43:44

QNo.8316527

困ってます

質問者が選んだベストアンサー

Excel2010のVBAだと、dir関数は、ディレクトリ名に空白がある場合も、ファイル名に空白がある場合も、どらも正しくファイル名を返しますね。

例えば、Dir("C:\temp\a b\x y") とかで正しく "x y" を返します。

空文字列が返っているのであれば、やはりファイルが存在しないと言うことでしょう。
もういちど見直してください。

投稿日時 - 2013-10-22 22:23:15

お礼

ご回答をいただいて、ファイルの読み込みではなくファイルの作成の方に問題があるのかも、と思って見直しました。今回のコードは、まずコマンドベースのプログラムを動かしてファイルを作成して、その後、作成されたファイルを開くコードの前に記述しているものなのですが、ファイルを作成する段階で、空白を含んだファイル名をそのままコマンドライン引数に渡していました。そこで、そちらを""で括るようにしたら解決できました。ありがとうございました。

投稿日時 - 2013-10-23 12:34:20

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

2003でも空白のあるファイル名でも正常にDirでファイル名を返します。

もしかして、違うフォルダでDirを実行されていませんか

ChDriveでドライブをChDirでフルパスでフォルダを指定してみてください。

投稿日時 - 2013-10-23 00:06:19

お礼

No.1さんのお礼に記述させていただきましたとおり、ファイルの読み込みではなく作成の方に問題がありました。ご回答いただきましてありがとうございました。

投稿日時 - 2013-10-23 12:35:46

あなたにオススメの質問