初めまして。シノダと申します。
私は現在、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
です。
乱文、長文失礼しました。
追伸です。
IEはフレーム分割していてもかまいません。
むしろ実際使用する時にはフレーム分割をすると思います。
左右に2分割しており、左にファイルへのリンク
右にEXCELを表示でもOKです。
又、EXCELが開かれた時にはツールバーも表示していたいと考えてます。
よろしくお願いします。
直接開くと言う部分の意味ですネ!
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を使わないといけないことになると思います。
ご検討下さい。
以上。
岡田 之仁さん
すばやいアドバイスありがとうございます。
少し説明が足りませんでした。
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上でサーバは構築することになると思いますので…。
UNIX上でですか・・・
う〜ん、似て非なる方法ならありますが・・・
インターネット上で行われますか?ローカル環境?
どのみち、HTTPのストリームを使ってExcelファイルを送受信する
わけですから・・・
ファイルを
サーバーから送信
クライアントから送信
を区別して管理すれば、OKなのでは?
セキュリティーも考慮すると、ファイルのサーバーへのアップ時
即、元ファイルに上書きすると危ないので、一旦、どこか別のフ
ォルダに保存させ、その一時保管されたファイルを、元ファイル
に更新させるスクリプトを、別のWebページにおいて、クライア
ントから参照させれば・・・
JavaScriptで、リダイレクト機能を関数に埋め込めば、クライア
ントからは見えないコードにできるはずなので、直接、そのURL
を参照させてしまうようなことは無いので・・・
私は、この方法を代用として動かしていますので・・・
ただサーバーの負荷が重い場合、更新処理に失敗する場合がある
ので、オリジナルと、更新前ファイル・更新後ファイルの管理に
はちょっと細工が必要な場合がありますが・・・
※ HTTPのみではなく、FTPでの認証アップも使えると思います。
ご検討下さい。
以上。