IEの[ファイルのダウンロード]ダイアログの[開く]ボタンで開いたブックのマクロの動作?
Question 017p その他 拙著「組み方講座・プロの定番」 Previous Next
242ページ 4章1-1 合わせ技[3] ◆ 環境・・ Excel 2003 & Windows XP
詳細は こちら
No.005の質問 に関連する内容になりますが、マクロよりブック名を指定するケースでのエラーについてご質問致します。
Webアプリケーションで、
ブラウザ(IE6)よりExcel(マクロあり)を開く際に ダイアログ「開く/保存/キャンセル」が表示され、「開く」を選択した場合の マクロの動作に関する質問です

WebアプリケーションはJavaなのですが、画面上のリンククリックで マクロ付きのExcelファイルをダウンロードできるものになっております。
なお、
ブラウザにExcelを表示するものではなくExcelを起動するものになっております。
クリック時に表示される「このファイルを開くか、または保存しますか?」の ダイアログで、「開く/保存/キャンセル」を選択することができます。
このとき、以下の現象が生じます。

(1) 「保存」を選択した場合
sample.xlsというファイルがローカルに保存されるため、VBAに記述している ブック名(ファイル名)、シート名&セルを取得する際にActiveWorkbookを sample.xlsと解釈できるため、ローカルに保存されたファイルsample.xlsを見つける ことができ、VBAが正常に実行される

(2)
「開く」を選択した場合
sample.xlsというファイルではなく、ファイルがローカルキャッシュ (\Temporary Internet Files配下)に入り、ファイル名に"[1]"が追加され、 sample[1].xlsという名前でキャッシュされるようです。
ところが、このファイルの VisualBasicEditorを開くとウィンドウのヘッダがsample(1).xlsと表記されており、実際、 ActiveWorkbookでもMsgboxを出してみたところsample(1).xlsと解釈されており、 ファイル(sample(1).xls)を見つけることができず、
VBAが正常に実行されない。
エラーメッセージ… 実行時エラー'1004':ピボットテーブルの集計元ファイル'[ファイル名(1)]シート名'を開くことができません。

「開く」とした場合に、ファイルに修飾子"[1]"が追加されるのは仕様の ようなのですが、このときVBAではActiveWorkbookと記述してもThisWorkbookと 記述しても探しに行くファイルが"(1)"付きのsample(1).xlsとなるため、VBAが 正しく動作しないのではないかと考えており、
これを解消する術をご教授頂けますでしょうか
Answer   Copyright (C) 2007.4.9 永井善王
拙著「Excel VBA マクロ組み方講座 プロの定番・裏技・合わせ技[編]」をご購読、ありがとうございます。
242ページの合わせ技[3]は 「ほかのブックを開いてそこにあるマクロを実行する」 と題するサンプルです。

ご質問は長文で、一生懸命ご説明いただいています。意味の取り違えがあるといけないので、ポイントと思われるカ所を青字にしておきました。抜き出すと下記のようになるかと思います。ご確認ください。
 
ブラウザよりExcel ブック を開くVBAが正常に実行されない。これを解消する術を・・・
赤字の部分は理解しにくいです。
あなたが
Javaで作成されたのであろう Excelファイルをダウンロードできる Webアプリケーション とは、IEを操作するためのものでしょうか?
IEにあるWebページでリンクされたExcelファイルをダウンロードする機能(右図)を、利用しているのでしょうか?

一応、右図の[開く]ボタンをクリックしてブックを開き、そのブックのマクロを実行すると、どうなるかをご説明し、回答とさせていただきます。

結論
[ファイルのダウンロード]ダイアログの[開く]ボタンで開いたブックのマクロの動作は、100%保証されている訳ではないようです。
単純なマクロで動作する場合も相当ありますが、正常動作しない場合があることを私は経験しています。
これはMS社の仕様であり順次改良されるでしょうが、このホームページでのダウンロードでは下記のように呼びかけています。
 ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。

なお、同様にして 1つのブックを開いた場合、ブック名に (1) が付いてしまう現象は、こちらの環境では確認できませんでした。
以上ですが、主旨の取り違えがありましたら、ご連絡ください。

Excel VBA Macro