ダウンロードしたブックには警告が出ます


Excel 2010では、Webサイトからダウンロードしたファイルや、メールに添付されてきたファイルを開くとき、警告が出るようになりました。

[編集を有効にする]ボタンをクリックしないと、このブックを編集できません。

ちょっと気になるのですが、この状態ではリボンが表示されません。もしかしたら、テクニカルプレビュー版だからでしょうか。ただし、別にリボンが使えないわけではなく、ただ隠れているだけです。Ctrl+F1キーを押すと、リボンが表示されます。

リボンを表示してみると、ほとんどのボタンが操作不能になっています。よく見ると、この警告には[保護されたビュー]の文字が。なるほど、ユーザーが編集を有効にするまでは、保護しているんですね。あと、もうひとつ気になったのですが、このようにダウンロードしたファイルを開くとき、一瞬Excel 2010のロゴ画面が表示されます。起動するときに表示されるアレです。もしかして、Excelをもうひとつ起動しているのでしょうか。

ビンゴですね。プロセスをチェックしてみると、コマンドラインに「/Embedding」が付いています。

ダウンロードしたファイルを開くときは、もうひとつのExcelを、内部でいわゆるビュワーとして起動し、まずそのビュワーで表示してくれるようです。ビュワーで表示しているだけですから、もちろん自動実行マクロなどは起動しません。確認しましたが、VBEのプロジェクトエクスプローラにも存在しませんでした。

[編集を有効にする]ボタンをクリックすると、このビュワーが終了し、本来のExcelで読み込まれます。

開くブックにマクロが含まれているときは、この後でマクロを無効にした旨の警告が表示されます。

ダウンロードしたファイルを開くとき[編集を有効にする]ボタンをクリックすると、Excel 2010は、そのファイルを記憶して、次回開くときには確認を出しません。このへんの仕組みは、マクロ入りブックを開くときの動作と同じです。詳しくは「2回目からはマクロの警告しません」を、ご覧ください。

なぜダウンロードされたファイルだと分かるのか

ちょっと、Excel 2010の話とは違いますが、開こうとしたファイルがダウンロードされたものだと、なぜ分かるのでしょうか。そういえば、Excelで開くときに限らず、ネットからダウンロードしたファイルを開こうとすると、よく次のようなメッセージが表示されます。

Excelではなく、Windowsのレベルで、そのファイルがダウンロードされたものだと認識しているようです。この仕組みは、Windows XPのSP2で追加されました。WebにあるファイルをIEでダウンロードしたり、メールの添付として送られてきたファイルなどには「ZoneId」という印が付けられます。エクスプローラなどでファイルを開くとき、そのファイルに「ZoneId」が記されていたら、上のような警告が表示されます。

この印は、ダウンロードしたファイルの「Zone.Identifier」という名前のストリームに書き込まれます。書き込まれる値は

[ZoneTransfer]

ZoneId=3

です。3がWebを表す数値らしいですが、ネットで検索したところ、他の数値は記録されないらしいです。とにかく、このストリームに「ZoneId」が記されていたら、開くときに警告が表示されるわけです。なお、NTFSのストリームに関しては「NTFSのストリームを利用する」を、ご覧ください。

「ZoneId」が記録されているかどうかは、ファイルのプロパティで確認することもできます。エクスプローラなどからファイルのプロパティを開いて、一番下に「このファイルは他のコンピュータから~」と書かれていたら、それはダウンロードしたファイルです。

その右にある[ブロックの解除]ボタンをクリックすると、ファイルのZone.Identifierストリームに記録された「ZoneId」が削除されます。もちろん「ZoneId」を削除してしまえば、ファイルを開くときの確認や警告は表示されなくなります。