Web上にあるファイルをVBからEXCELで開き、その開いたEXCELのみを閉じるには?


きくち  2004-02-23 17:42:39  No: 112043  IP: [192.*.*.*]

はじめまして、きくちと申します。

Set oExcel = CreateObject("Excel.Application")
Set xBook = oExcel.Workbooks.Open"http://172.16.2.2/test\test.xls")
もしくは
Set xBook = oExcel.Workbooks.Open"\\172.16.2.2\test\test.xls")
等としてVBのある関数からWeb上にあるEXCELファイルを開きます。

そして別の関数から
パスを指定して上記の関数で開いたEXCELファイルのみを指定して
そのファイルが編集中でなければダイアログも出ずに閉じる処理を行いたいのです。編集中であれば保存をそくすいつものダイアログがでて構いません。

Set oExcel = GetObject(\\172.16.2.2\test\test.xls)
oExcel.Application.Quit
のようにしてできないかと思い試してみましたが

「編集のためロックしています。以下省略」
というメッセージがでて読み取り専用、通知ボタンをどちらを押しても
ファイルが閉じてしまいます。

この閉じてしまう現象は
Set oExcel = GetObject(\\172.16.2.2\test\test.xls)
の一文のみで起きるようで
oExcel.Application.Quit
は関係ないようです。

ネット上で過去ログなど色々検索してみましたが
参考になるモノは見つけられず、これ以上進めずにいます。

どなたか、なにかご存じの方はいますでしょうか?
よければアドバイスを頂けたらうれしいです。

どうぞよろしくお願いします。

長々と失礼しました。不備な点などあればご指摘下さい。


環境:
OS:WindowsXP
OFFICE2003
Webサーバ:Linux上のApache2.0.48

PS:
Set oExcel = Nothing
等の処理はきちんといれておりプロセスが残っているという箇所はないと思います。

編集 削除
きくち  2004-02-24 15:27:39  No: 112044  IP: [192.*.*.*]

どなたかご存じの方いらっしゃいませんか…。
このようなことは普通しないのですかね。
やはり無理なのかなぁ

編集 削除
kara  2004-02-24 16:35:26  No: 112045  IP: [192.*.*.*]

> そして別の関数から
> パスを指定して上記の関数で開いたEXCELファイルのみを指定して
> そのファイルが編集中でなければダイアログも出ずに閉じる処理を行いた> いのです。編集中であれば保存をそくすいつものダイアログがでて構いません。
ここの部分を
「エクセル本体は閉じずに、ワークブックのみ閉じる」
と捕らえました

そうなりますと
閉じる処理は
oExcel.Workbooks("test.xls").Close
のみになるのではないでしょうか

どちらにせよ
Set oExcel = GetObject(\\172.16.2.2\test\test.xls)
は問題かと・・・

編集 削除
きくち  2004-02-24 17:29:32  No: 112046  IP: [192.*.*.*]

karaさんご回答ありがとうございます

やりたいことは
>「エクセル本体は閉じずに、ワークブックのみ閉じる」
ではなく本体を閉じたいのです。
文章が下手で申し訳ありません。
なにか方法はありますでしょうか?


>どちらにせよ
>Set oExcel = GetObject(\\172.16.2.2\test\test.xls)
>は問題かと・・・

申し訳ありません、どう問題なのでしょうか?
セキュリティ面と言うことでしょうか?
よければ教えてもらえませんでしょうか?

編集 削除
特攻隊長まるるう  2004-02-27 15:54:47  No: 112047  IP: [192.*.*.*]

んーとぉ…苦手なところなので放って置いたんですけど、ちょっと上げw
…関係ないかもしれないんですが…
Outlook のアイテムを開いたりする場合、ローカルの一時(Temp)フォルダ
にダウンロードしてそれを開きますよね?。直接ファイルを開こうとすると
いろいろマズいのかも?。以前、Outlook に帳票を保存した時は PKMCDO 
だか何だか使ってた…けどオイラはユーザインターフェースとかデータベース
関連が担当だったから解析してないっす(汗)。いずれやるんだけど、まだ
やりそうにないので…まぁ、たいした情報じゃないかも…。
ところで WebBrowser とか使ったらどうなるんですかね?。ま、その辺で
何か情報がつかめるかも?とか言いつつお茶を濁して…ごにょごにょ。
http://support.microsoft.com/default.aspx?scid=kb;ja;243058&Product=xl2003

編集 削除
kara  2004-03-01 10:31:02  No: 112048  IP: [192.*.*.*]

回答遅くなりましてすみません

> 申し訳ありません、どう問題なのでしょうか?
> セキュリティ面と言うことでしょうか?
> よければ教えてもらえませんでしょうか?
そんな大げさな話ではないです
パスの部分をダブルクォーテーションで囲まなくていいのかなぁ
と思っただけです

心配させてしまったようで、すみません

編集 削除
岡田 之仁  2004-03-01 10:52:57  No: 112049  IP: [192.*.*.*]

Web上での話題は過去もありましたが・・・
仮にIISとしても、直接IISのディレクトリ下にある
エクセルファイルは開けられません。

IISの設定で、書き込みを可能にしてもダメです。

エクセルに限らずですが、URIのファイルをオープンした際
には、そのURIに一時ファイルを作成します。これを作成で
きないか、もしくは該当ファイルがリードオンリー属性になっ
ていた場合、排他制御で、他のプロセスが既に開いていると認
識するからです。

よって、Web上から一旦ローカルにコピーし、ローカルで開
き、処理済みのものをWebにアップするような手法でないと
実現不可能です。

Webではなく、共有フォルダとかで行うのであれば、その問
題からは解放されます。仮想ドライブにマウントしようが、
URI上のエクセルファイルを直接開こうが問題なしです。

どうしてもWebを使わないといけないようでしたら、IIS
やWebのシステムのことをもっと理解して頂かないと、やり
たいことを実現するのは無理です。

ご検討下さい。

以上。

編集 削除