メリットとしてはシートをユーザーが表示できないという点です。.xlsm形式で全てのシートをxlSheetVeryHiddenにするということはできません。また、ウィンドウを非表示にしてもユーザーが再表示できてしまいます。
ただし.xlam形式だとちょっと不便な時もあります。
今、.xlam形式と.xlsm形式のファイルを1つずつ開いているとします。
ここで以下のようなコードを実行するとxlsmの方だけが捕捉されます。
Workbooks.Countは1です。.xlamもWorkbooksで直接名前を指定すると捕まえられるので、いまいち腑に落ちないんですが。
WorkbooksがダメならAddinsかと思うと、こちらは登録されているアドインだけが対象です。ただ開いただけの.xlamは無視されてしまいます。Addins.Countは5です。
最近になって気づいたのですが、いつの間にかAddins2というコレクションがありました。どうも2010で追加されていたようです。
<参考>New Objects, Collections, and Enumerations_Excel.Dev - MSDN
これだと未登録の.xlamでも開いていれば対象にするらしい。
Addins2.Countは6でした。
2003では拡張子の区別がなく、.xlsのままIsAddinをTrueにするなんてこともやりました(いい使い方ではないと思います)。その時に、このFor EachやCountで困ったことがありました。2003でこれがあったら助かったんですけど。
それにしてもこういうのが新たに追加されたということは、.xlamを普通のブックのようにただ開かせるという使い方もけっこうあるんですかね。
0 件のコメント:
コメントを投稿