
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】ファイルパスに半角スペースが入ると、VBAが動かない
Excel(エクセル)
-
VBA で、スペースを含むファイル名をコピーしたい。
Excel(エクセル)
-
お助けください!VBAのファイル名エラーについて
Visual Basic(VBA)
-
-
4
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
5
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
コマンドボタンを押すたびに大きくなってしまう
Excel(エクセル)
-
12
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
13
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
14
VBAで配列の計算
Excel(エクセル)
-
15
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
16
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
17
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
18
Accessのコマンドボタンの立体化について
Access(アクセス)
-
19
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
20
ExcelでVBAを使用した際に、『パス名が無効です』とエラーになります。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
バッチファイルで、iniファイル...
-
ftp処理でmove(移動)を行いたい
-
ファイル名の頭5桁と同名のフォ...
-
ファイル名を変更して移動させ...
-
「win11-23H2」を「win11-24H2...
-
エクセルのVBAについて とある...
-
チームズのチャット画面にファ...
-
コマンドプロンプトのエラーに...
-
バッチファイル 特定ウインドウ...
-
「営業秘密の漏洩」について
-
セッション関数を使わずにファ...
-
大量のフォルダからひとつのフ...
-
バッチでテキストファイルから...
-
.txtではなく.logの方が良いの...
-
バッチファイル 文字列にスペ...
-
VBAでワークシートを引数として...
-
[teraterm] waitコマンドで停止...
-
バッチ処理でファイルの中身を...
-
バッチファイルでサーバーのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
バッチファイルで、iniファイル...
-
ftp処理でmove(移動)を行いたい
-
ExcelVBAのDirでスペース含むフ...
-
コマンドプロンプトでファイル...
-
[DOS] コピー先に同じファイル...
-
バッチコマンドでファイル名の...
-
DOSのバッチ作成について‐FORの...
-
コマンドプロンプトで変数が数...
-
ファイル名の頭5桁と同名のフォ...
-
Windowsコマンドプロンプトで、...
-
【DOSバッチ開発】末尾のタブの...
-
フォルダ内の更新日時が一番新...
-
ExifToolでの文字化け対策
-
ファイル名を一括してリネーム...
-
コマンドプロンプトでのCSV...
-
【Access】エクスポート時のフ...
-
バッチ処理で16進数でファイル...
-
access,vbaでフォルダ内のファ...
-
aタグのhrefにネットワークパス...
おすすめ情報