ラベル Excelマクロ の投稿を表示しています。 すべての投稿を表示
ラベル Excelマクロ の投稿を表示しています。 すべての投稿を表示

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) → ブックを閉じる → 新しいファイル名に変更する → 変更後のファイル名で開く といった処理を作って対応。

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


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

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

2018年9月3日月曜日

Excel条件付き書式のプレビューに文字が表示されない!?

Excel(2016)のマクロで条件付き書式を他のシートへコピーするのを作っていました。コピー処理自体はできて、動作も問題ないと思っていた。でも、Excel上で条件付き書式の設定画面を確認すると、なんか違和感。

うーん、、、あ! プレビュー(サンプル)に文字が表示されてない!?

そうそう同じケースになることはないでしょうが、誰かしら参考になればと思い、書いておきます。(検索の仕方の問題もあるでしょうが、ググってもそれらしきケースがみつからなかったし)


■対処方法
今回はマクロ側の問題であったのだけど、手動でも起こり得ることなので、とりあえず手動で直す方法です。

条件付き書式で適用する表示形式の内容が、";;" になっていました。 ∑q|゚Д゚|pワオォ!!

コピー先の条件付き書式で、該当のルールの編集画面から、[書式]>[クリア]ボタンを押してOK。
なおった状態



■マクロ側の問題
そもそも、コピー処理といっても、元の条件付き書式オブジェクト(FormatCondition)を一発でコピー先に設定することができないので、各項目ごとに値を移していた(コピー先.XXX=コピー元.XXX)。
その際、元のプロパティが未設定(Null)だとエラーとなるので、on error resume nextで無視していた。

今回問題となったNumberFormatは、未設定だとEmpty。これをコピーすると、設定後は";;"となってました。 なんで?(゚⊿゚)シラネ
そんなわけで、IsEmpty(コピー元.NumberFormat)=Falseの時だけ、コピー先に設定するようにした。
→ これで上記の手動による対応も不要。