関連ページ  
力任せの WEB アプリ (1) -- スクリプトダウンロード

業務アプリでは、少々無茶でもやらなきゃいけない時があります。
ルールを守ってコストパフォーマンスを上げます。






ボタンを押したら決められたローカルのディレクトリに Excel をダウンロード
そのサイトを信頼してしまうと、IE は通常アプリケーションとして動作します。
ログインしているユーザの責任で、WEB はハードディスクの一部になります。

上記画像のサンプルでは、ローカルの WEB サーバを「信頼するサイト」
に登録していますが、外部の WEB でもかまいません。


以下の関数は、呼び出すと WEB 上のファイルをダウンロードした後、
c:\tmp\webexcel.xls として 保存します。
ダウンロードするファイルは、信頼するサイトである必要はありません。
IE 上で表示している HTML が 信頼するサイトであれば良いです。
function download() {

	var objSrvHTTP = new ActiveXObject("Msxml2.ServerXMLHTTP");
	var Stream = new ActiveXObject("ADODB.Stream");

	objSrvHTTP.open("GET", "http://localhost/php/test/BookBase.xls", false );
	objSrvHTTP.send();

	Stream.Open();
	Stream.Type = 1;
	Stream.Write( objSrvHTTP.responseBody )
	Stream.SaveToFile( "c:\\tmp\\webexcel.xls", 2 );
	Stream.Close()

}
Msxml2.ServerXMLHTTP は、サーバー用のオブジェクトです。
( もしエラーになる場合は、Msxml2.ServerXMLHTTP.6.0 と書いてみるといいです )

Msxml2.XMLHTTP でも動作しますが、ダウンロード先のドメインと、HTML のドメイン
が一致する必要があります。ただ、経験上、問題無いのであれば Msxml2.XMLHTTP のほうを
使ったほうがトラブルは少なくて済みます。

いずれにしても、あまり大きなファイルは避けないと、メモリを圧迫するので注意して下さい。
これも、経験上数メガなら大丈夫だとは思います。


力任せの WEB アプリ (2) では、ダウンロードした Excel を IFRAME に埋め込んで、
VBScript から IFRAME 内の Excel を変更します