[[20240331114249]] 『EXCELのVBAでファイル名として利用するとエラーに』(Airbag) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『EXCELのVBAでファイル名として利用するとエラーになる文字列』(Airbag)

windowsのOSでファイル名として利用できる文字列内で
EXCELのVBAでファイル名として利用するとエラーになる文字列を教えて下さい。

目的は、
VBAでファイル名を読み取る時や保存する時にエラーにならないように事前にチェックしてエラーを回避するように利用できない文字列を他の文字に置換するようにしたいので

< 使用 Excel:Excel2021、使用 OS:Windows11 >


こんにちは ^^
エクセル様も多分OSのIOシステムをお使いだと思うのでOSで使えないものは使えないかと。。。
多分ですが( ̄▽ ̄)
1.ウインドウズでファイル名に使えない文字
2.同、使わないほうが良いと思われる文字
3.エクセルでファイル名に使えない文字
4.同、使わないほうが良いと思われる文字
とかで検索すれば懇切丁寧なサイトが多数有ると思いますです。
例外処理は。。。On Error 〜 がありますよ。← 只今私も勉強中^^;
でわ
m(__)m
(隠居Z) 2024/03/31(日) 13:02:25

アドバイス感謝します。

問題は、
windowsで作成されたファイル名をExcelのVBAで読み込むとエラーになったり
VBAでファイルを保存する時に想定したファイル名が使えなくてエラーになるケースです。

参考になりそうなサイトを見つけましたが

https://vba-create.jp/vba-parts-file-name-check/
https://itmemo123.net/office/28/

サイトに書かれている内容以外で他に注意すべき事項などはありますか ?
(Airbag) 2024/03/31(日) 13:54:44


 こんにちわ ^^
私は浅学菲才のため詳細は存じません。なので、何の根拠もありませんが
 1.極力記号関係は使わない様にしています。
 2.数値は先頭は避けアルファベットか拡張子でサンドイッチ[D20240331.xlsx]
   [my20240331_10001xx.txt]にする様にしています。
 3.↑アンダーラインはよく使ったりしますが今まで何も問題はありませんでした。
  いままでは。。。( ̄▽ ̄;)←実は良くわかっていないけど多分大丈夫(*^^*)
 2024-03 なんてすると2021に替わってたり。。。することが絶対に無いとは言えないかも
しれません。。。()もシート名なんかに使うと使えるのですがEvaluateとは相性が悪いかも
しれません。でわ後は博学多識な回答者様のお出ましをお待ちください。

(隠居Z) 2024/03/31(日) 14:50:19


 単にVBAといってもどんな道具を使うかに依存して注意点は異なります。
[[20230806112638]] が参考になると思います。
 そのなかで、纏め部分を以下に全文引用します。他の発言も読まれると参考になるでしょう。

 == 引用開始 ==
 hatenaさんやまる2021さんの解説が分かり易かったので、
 また同様の質問があったときのために、再度まとめなおしました
  (1) Windowsには、OSの仕様上ファイル名として使えない文字がある  \/:*?"<>| の9文字
  (2) Excelには、ブック名として使えない文字がある  [] の2文字
      ・Excelで新規保存、名前を付けて保存する場合、この2文字は使えない
      ・VBAでSave,SaveAs等でこの2文字をファイル名に使うと実行時エラー
      ・Explore等で名前を変更すれば、ブック名にこの2文字を使うことはできる
      ・この2文字を使うとブックを跨いだ参照式で不都合がある
  (3) Excel VBAはUnicode文字への対応が完全ではない
      ・VBAはある時点で進化が止まっており(MSに見捨てられた?)、
        VBE(VBエディター)ではテキストは Shift-JISで処理されており、
        Unicodeにしかない文字(以後Unicode文字と表記)は?と表示されるので、Unicode文字の確認はVBEではできない。
       (ローカルウインドウ、ウォッチウインドウ、イミディエイトウインドウなど)
      ・変数やほとんどの関数やステートメントはUnicodeで処理しているので、Unicode文字も問題なく処理できる。
      ・ワークシートもUnicodeで処理しているので、Unicode文字を確認する場合はセルに出力するとよい
      ・VBE上でUnicode文字を記述したい場合は、コードを調べて、ChrW(12316) というようにChrW関数を使う
      ・Unicodeに対応していない関数やメソッドもある。
        (Dir関数、Nameステートメント、Killステートメント等)
      ・「Dir関数」はEXCELにVBAが搭載されたEXCEL95時代からある関数で、レガシーな関数です。
         Shift_JISで扱えない文字は 「?」U+003Fに置き換えられる仕様。
         可逆性はないので、一旦「?」に置き換わると、元に戻せない
  (4) まとると
     ・ファイル名にUnicode文字を含むファイルの処理には、
       VBAのDir関数、Nameステートメント等を使わずにFileSystemObjectを使う必要がある
 (ExcelVBAでのファイル処理で知っておくべきこと) 2023/08/08(火) 09:26:28
  == 引用終了 ==
(xyz) 2024/04/01(月) 09:19:54

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.