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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
【VBA】ファイルパスに半角スペースが入ると、VBAが動かない
Excel(エクセル)
-
VBA で、スペースを含むファイル名をコピーしたい。
Excel(エクセル)
-
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
-
4
お助けください!VBAのファイル名エラーについて
Visual Basic(VBA)
-
5
VBA Dir関数でファイルをループしている中でDir関数を使用する場合
Visual Basic(VBA)
-
6
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
7
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
8
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
VBAを何回も作り直して、容量が増えた
Excel(エクセル)
-
14
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
15
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
16
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
17
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
18
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
19
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
-
20
非表示になったエクセルは?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトで変数が数...
-
window コマンドでファイルサイ...
-
コマンドプロンプトでファイル...
-
【DOSバッチ開発】末尾のタブの...
-
access,vbaでフォルダ内のファ...
-
エクセルVBAを使用してJPGファ...
-
バッチファイルで同一フォルダ...
-
.batでファイル名から抽出して...
-
ExifToolでの文字化け対策
-
gnuplotで日本語を含むepsファ...
-
バッチ処理で16進数でファイル...
-
word VBA ファイル名 保存
-
ファイル名を該当フォルダ内か...
-
【vbs】ファイル名の検索と該当...
-
サブフォルダからファイルをコ...
-
バッチにて複数のcsvファイルを...
-
ExcelVBAのDirでスペース含むフ...
-
VBでテキスト形式のファイル...
-
コマンドプロンプトまたはpower...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
バッチコマンドでファイル名の...
-
コマンドプロンプトで変数が数...
-
[DOS] コピー先に同じファイル...
-
フォルダ内の更新日時が一番新...
-
ftp処理でmove(移動)を行いたい
-
ExcelVBAのDirでスペース含むフ...
-
.batでファイル名から抽出して...
-
DOSのバッチ作成について‐FORの...
-
access,vbaでフォルダ内のファ...
-
Windowsコマンドプロンプトで、...
-
【DOSバッチ開発】末尾のタブの...
-
word VBA ファイル名 保存
-
【vbs】ファイル名の検索と該当...
-
コマンドプロンプトまたはpower...
-
ファイル名を該当フォルダ内か...
-
バッチ処理で16進数でファイル...
-
スタートアップのファイルをバ...
おすすめ情報