ブラウザ内でWebサーバ上のEXCELファイルを表示(書き込み可能)させるには?


シノダ  2004-02-13 14:01:42  No: 111802  IP: [192.*.*.*]

初めまして。シノダと申します。

私は現在、Apache上に構築したWebDAV環境においてある
EXCELファイルをIEから直接開き(Webフォルダではなく)、IE内で編集、保存という処理を実現したくて、検証しています。

しかし、IEから直接EXCELファイルを開くと読み取り専用になってしまい
EXCEL内のツールバーから上書き更新ができず、「名前を付けて保存」ダイアログから場所を指定して別名で保存するしかできません。

IEから直接EXCELファイルを読み取り専用ではなく、開く方法をご存じの方いませんでしょうか?

ttp://support.microsoft.com/default.aspx?scid=kb;ja;833292
こちらに「Excel を Internet Explorer 内で開いた場合、Excel は読み取り専用で開かれます」と明言されていますのでIEの仕様でしょうがないのかなとも思ってしまいますがActiveXを使用してなにか方法はないでしょうか?

単にEXCELを起動する方法は
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.open"D:/test.xls")
のような感じでよく見かけるのですが

ttp://support.microsoft.com/default.aspx?scid=kb;JA;311765
にあるサンプルをみて少しやりたい事に近かったのですが
C++がわからないのとWebサーバ上のファイルを開くと
読み取り専用になっていまして。

できればVBでActivXを作成したいのですが
どなたかご存知の方がいれば、ご教授をお願いします。

環境

OS:WinXP
Webサーバ:apache2.0.48
Davモジュールとmod_encodingモジュールを組み込んでます。
Office2003
です。

乱文、長文失礼しました。

編集 削除
シノダ  2004-02-13 14:15:30  No: 111803  IP: [192.*.*.*]

追伸です。

IEはフレーム分割していてもかまいません。
むしろ実際使用する時にはフレーム分割をすると思います。

左右に2分割しており、左にファイルへのリンク
右にEXCELを表示でもOKです。

又、EXCELが開かれた時にはツールバーも表示していたいと考えてます。

よろしくお願いします。

編集 削除
岡田 之仁  2004-02-13 14:19:26  No: 111804  IP: [192.*.*.*]

直接開くと言う部分の意味ですネ!

HTTPの場合、どう頑張っても、サーバー上のファイルは、
ブラウザが一旦ダウンロードして、ローカル側で編集する
ことになります。
それを再度サーバーにアップして、編集結果を更新する事
になるわけです。

で・・・
http://support.microsoft.com/default.aspx?scid=kb;JA;311765
これは、そのやりたいことそのままズバリのものです。
WebDAVでのアップ方法も可能とされているのですから、該当の
ActiveXをダウンロードされ、添付のものを改良すれば、行いたい
ことが可能と言うことになります。

抜粋・・・
この機能と URL を組み合わせると、以下のようなコードを使用して、
ASP ファイルからストリームで返された HTML 出力を開き、Excel 
内部のデータとして表示できます

サーバーが Microsoft FPSE (FrontPage Server Extensions) か 
WebDAV (Web Distributing Authoring and Versioning) HTTP プロトコル 
拡張のいずれかをサポートしている場合、リモート サーバーの Web 
フォルダに保存することもできます。次のコードは、リモート ファイル 
サーバーに新しいファイルを保存する動作を示しています。 
抜粋終わり・・・

この2点が今回必要な動作で、既に提供されておりますので、
わざわざ何をお作りになるのか・・・

ただし、Apache で、ASP でのこの動作と同等のことが行えない場合
IISを使わないといけないことになると思います。

ご検討下さい。

以上。

編集 削除
シノダ  2004-02-13 14:54:38  No: 111805  IP: [192.*.*.*]

岡田 之仁さん
すばやいアドバイスありがとうございます。

少し説明が足りませんでした。

ttp://support.microsoft.com/default.aspx?scid=kb;JA;311765

を一応試してはみたのですが
読み取り専用フラグを消すことはopenメソッドに第二引数にFalseを
与えてできたのですが、いざ更新しようとすると

The program encountered an error tyring to perform the command If the program persists, contact the program vendor for a possible solution 

というエラーがでて更新がうまくいかず、C++がわからないので
VBで作ろうと思ったのです。

>ただし、Apache で、ASP でのこの動作と同等のことが行えない場合
>IISを使わないといけないことになると思います。

とかかれてある事が原因かもしれませんね。
IISの仕様は無理なんですよね。
結局Linux上でサーバは構築することになると思いますので…。

編集 削除
岡田 之仁  2004-02-13 15:38:16  No: 111806  IP: [192.*.*.*]

UNIX上でですか・・・

う〜ん、似て非なる方法ならありますが・・・
インターネット上で行われますか?ローカル環境?

どのみち、HTTPのストリームを使ってExcelファイルを送受信する
わけですから・・・

ファイルを
サーバーから送信
クライアントから送信
を区別して管理すれば、OKなのでは?

セキュリティーも考慮すると、ファイルのサーバーへのアップ時
即、元ファイルに上書きすると危ないので、一旦、どこか別のフ
ォルダに保存させ、その一時保管されたファイルを、元ファイル
に更新させるスクリプトを、別のWebページにおいて、クライア
ントから参照させれば・・・

JavaScriptで、リダイレクト機能を関数に埋め込めば、クライア
ントからは見えないコードにできるはずなので、直接、そのURL
を参照させてしまうようなことは無いので・・・

私は、この方法を代用として動かしていますので・・・
ただサーバーの負荷が重い場合、更新処理に失敗する場合がある
ので、オリジナルと、更新前ファイル・更新後ファイルの管理に
はちょっと細工が必要な場合がありますが・・・

※  HTTPのみではなく、FTPでの認証アップも使えると思います。

ご検討下さい。

以上。

編集 削除