ExcelのVBAで、ファイルが存在するかを調べる為に以下のような記述をしました。
If Dir(filename) = "" Then Err.Raise errnumber
ここで、filenameに通常のファイル名が入る場合は問題ないのですが、filenameにスペースが含まれている場合、明らかにファイルが存在する場合でもErr.Raiseが呼ばれてしまいます。そこで、次の記述を上記のIf文の前に挿入してみました。
filename = """" & filename & """"
ファイル名を「"」で囲めば良いのでは、と考えたのですが、実行すると、
実行時エラー '52'
ファイル名または番号が不正です。
とのエラーが出てしまいます。このように、スペースを含む可能性があるファイル名に対してDir関数を使うにはどのようにすれば良いのでしょうか。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Excel2010のVBAだと、dir関数は、ディレクトリ名に空白がある場合も、ファイル名に空白がある場合も、どらも正しくファイル名を返しますね。
例えば、Dir("C:\temp\a b\x y") とかで正しく "x y" を返します。
空文字列が返っているのであれば、やはりファイルが存在しないと言うことでしょう。
もういちど見直してください。
ご回答をいただいて、ファイルの読み込みではなくファイルの作成の方に問題があるのかも、と思って見直しました。今回のコードは、まずコマンドベースのプログラムを動かしてファイルを作成して、その後、作成されたファイルを開くコードの前に記述しているものなのですが、ファイルを作成する段階で、空白を含んだファイル名をそのままコマンドライン引数に渡していました。そこで、そちらを""で括るようにしたら解決できました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
【VBA】ファイルパスに半角スペースが入ると、VBAが動かない
Excel(エクセル)
-
VBA で、スペースを含むファイル名をコピーしたい。
Excel(エクセル)
-
お助けください!VBAのファイル名エラーについて
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
6
エクセル関数で日付かどうかの確認?
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
9
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
10
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
11
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
12
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
13
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
14
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
15
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
16
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
17
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
18
本当にPublicな変数(配列で)
Visual Basic(VBA)
-
19
DATE型変数を初期化する方法
Visual Basic(VBA)
-
20
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトで変数が数...
-
ftp処理でmove(移動)を行いたい
-
.batでファイル名から抽出して...
-
access,vbaでフォルダ内のファ...
-
[DOS] コピー先に同じファイル...
-
サブフォルダからファイルをコ...
-
バッチコマンドでファイル名の...
-
コマンドプロンプトでファイル...
-
【DOSバッチ開発】末尾のタブの...
-
ExcelVBAのDirでスペース含むフ...
-
ファイル名を該当フォルダ内か...
-
ファイル名に ” を使うと エク...
-
コマンドプロンプトでのCSV...
-
word VBA ファイル名 保存
-
バッチファイルで、iniファイル...
-
VBA GetAttrについて教えてくだ...
-
一括処理が出来ません(cygwin使用)
-
コマンドプロンプトのエラーに...
-
大量のフォルダからひとつのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトでファイル...
-
コマンドプロンプトで変数が数...
-
[DOS] コピー先に同じファイル...
-
バッチコマンドでファイル名の...
-
バッチファイルで、iniファイル...
-
ExcelVBAのDirでスペース含むフ...
-
ftp処理でmove(移動)を行いたい
-
フォルダ内の更新日時が一番新...
-
.batでファイル名から抽出して...
-
【vbs】ファイル名の検索と該当...
-
word VBA ファイル名 保存
-
access,vbaでフォルダ内のファ...
-
VBA GetAttrについて教えてくだ...
-
バッチ処理で16進数でファイル...
-
ファイル名に ” を使うと エク...
-
サブフォルダからファイルをコ...
-
DOSのバッチ作成について‐FORの...
-
ファイル名を該当フォルダ内か...
-
コマンドプロンプトまたはpower...
おすすめ情報