2019年9月10日火曜日

Excel VBA:Workbook.Nameで取得できるファイル名が正しくない!? 大括弧"[x]"が丸括弧"(x)"になる!

ファイル名に大括弧 "["、"]" が含まれる場合、Workbook.Nameで取得した名前には、丸括弧 "("、")" に変換されてしまう現象に遭遇。

本来のファイル名は、"〇〇〇[a].xlsx" であるのに
それを開いたWorkbookオブジェクトのNameプロパティを確認すると、
"〇〇〇(a).xlsx" といった具体。


よくよく調べると、ブック名で大括弧を使用されるとExcel的に都合が悪いもよう。
SaveAsで保存する時のファイル名にも似たような問題があるようだ。


■参考
【Excel】ファイル名に半角角括弧を含むブックからシートをコピーするとコピー先ブックが破損する - ktts’s blog
https://ktts.hatenablog.com/entry/2018/08/25/004217

ファイル名の大カッコ(角カッコ)には気を付けろ! -
http://chaichan.lolipop.jp/vbtips/VBMemo2010-03-31.htm


ということで、問題があるのはわかったけど、処理的に大括弧のあるファイル名のファイルを開いて、別名(ファイル名には同じく大括弧使う)で保存しなおす必要があった。


そんなわけで以下のようにした。

・ファイル名には、Workbook.FullName から取得したものを使用する。
 …FullNameだと大括弧のままで取得できる。 
・Workbook.SaveAs の代わりには、
 対象のファイルを、一旦別の仮名で「名前をつけて保存」(本来のSaveAs) → ブックを閉じる → 新しいファイル名に変更する → 変更後のファイル名で開く といった処理を作って対応。

 (マクロブックと、大括弧つきファイル名ブックは別なので、これでいいけど同じファイルだったら、ダメですね。)


そもそも大括弧をファイル名に使わなきゃいいんだな。今回は他のシステムの都合上、どうしようもないのだが、個人的に今後気をつけようと思った。

皆さんもお気をつけください。

0 件のコメント: