次の方法で共有


Excelのマクロで「保護されたビュー」の制御について

質問

2013年6月11日火曜日 9:52

Excelのマクロで、別のExcelファイルを開いて、データを取得するとき、

すべてのセキュリティをオフにしても、「保護されたビュー」を要するExcelファイルを開くと、

マクロが応答しなくなります。

「保護されたビュー」を要するExcelファイルを開いたときに、

条件分岐ができるような、判定方法は何かないでしょうか。

「ActiveProtectedViewWindow」プロパティでは、

このプロパティを取得する前に、マクロが応答しなくなります。

すべての返信 (2)

2013年6月12日水曜日 10:52

>Excelのマクロで、別のExcelファイルを開いて、データを取得するとき、
そのような時は、別のアプリケーションインスタンスで開くのが無難です。
同じアプリケーションで開くと後から開いたブックの設定に変更されることがあります。

「ActiveProtectedViewWindow」プロパティ
これは省略せずに表記すると
Application.ActiveProtectedViewWindow プロパティ
です。

つまり、Applicationインスタンスに対するプロパティであり、ブックやウィンドウ毎のプロパティではありません。
 このようにApplicationにくっ付いているプロパティは、後から開いたブックに保存されていたプロパティ値によって変更されることが多いようです。

それを防ぐ為に、マクロが動作するアプリケーションインスタンスと、データを取得するワークブックのためのアプリケーションインスタンスは分離することを推奨します。


2013年6月13日木曜日 9:39

ファイルを開く前に、ファイルの代替データ ストリームの Zone.Identifier をチェックすれば、ある程度は判別できるかもしれません。
保護されたビューで開かれるファイルは、Zone.Identifier の ZoneId が 3 になっているのではないかと思います。