Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11821 / 13644 ツリー ←次へ | 前へ→

【13820】エクセルファイルが開いているかどうか poch 04/5/14(金) 12:56 質問[未読]
【13822】Re:エクセルファイルが開いているかどうか IROC 04/5/14(金) 13:52 回答[未読]
【13824】Re:エクセルファイルが開いているかどうか ちゃっぴ 04/5/14(金) 14:10 回答[未読]
【13841】Re:エクセルファイルが開いているかどうか poch 04/5/14(金) 22:34 お礼[未読]
【13847】Re:エクセルファイルが開いているかどうか ちゃっぴ 04/5/15(土) 2:59 回答[未読]
【13848】Re:エクセルファイルが開いているかどうか ちゃっぴ 04/5/15(土) 3:37 回答[未読]
【13861】Re:エクセルファイルが開いているかどうか IROC 04/5/15(土) 12:20 回答[未読]
【13863】Re:エクセルファイルが開いているかどうか ちゃっぴ 04/5/15(土) 12:45 発言[未読]
【13923】Re:エクセルファイルが開いているかどうか poch 04/5/17(月) 14:08 お礼[未読]
【13922】Re:エクセルファイルが開いているかどうか poch 04/5/17(月) 13:53 お礼[未読]
【13825】Re:エクセルファイルが開いているかどうか Jaka 04/5/14(金) 14:27 回答[未読]

【13820】エクセルファイルが開いているかどうか
質問  poch  - 04/5/14(金) 12:56 -

引用なし
パスワード
   はじめまして。
エクセルのVBAから、ファイルサーバ(ネットワークサーバ)上のあるエクセルファイルが開いているかどうかを調べたいとおもっています。 Openメソッドのインプットモードでエラーさせる方法は思いついたのですが、もう少しスマートな方法があればご教示いただければ幸いです。
また、誰がそのファイルを開いているかVBAで取得する術がわかりません。共有モードのエクセルなら、userstatusプロパティーで取得できそうですが、ファイルサーバ上のエクセルファイルで実行しても取得できませんでした。

エキスパートの皆さん、どうぞよろしくお願いいたします。

OS:Windows2000 SV3
Excel2000

【13822】Re:エクセルファイルが開いているかどうか
回答  IROC  - 04/5/14(金) 13:52 -

引用なし
パスワード
   ReadOnly プロパティは、試しましたか?

【13824】Re:エクセルファイルが開いているかどうか
回答  ちゃっぴ E-MAIL  - 04/5/14(金) 14:10 -

引用なし
パスワード
   ▼poch さん:
>はじめまして。
>エクセルのVBAから、ファイルサーバ(ネットワークサーバ)上のあるエクセルファイルが開いているかどうかを調べたいとおもっています。 Openメソッドのインプットモードでエラーさせる方法は思いついたのですが、もう少しスマートな方法があればご教示いただければ幸いです。

VBAの基本機能では無理だと思います。
APIなら可能かも知れませんが・・・

>また、誰がそのファイルを開いているかVBAで取得する術がわかりません。共有モードのエクセルなら、userstatusプロパティーで取得できそうですが、ファイルサーバ上のエクセルファイルで実行しても取得できませんでした。

ファイルが格納されているサーバ上でコマンドプロンプトから、Net Fileコマンドを実行すればオープンファイルの一覧を取得できます。

エクセルから呼ぶ場合には、あらかじめサーバでTELNETを起動しておき、
TELNETログイン 〜 Net Fileまでを記したスクリプトを実行し、
そのリダイレクト結果を取得すれば可能かも・・・

というように煩雑なものしか浮かびません(;´д`)トホホ

Pochさんはこれを取得して何をなさりたいのでしょうか?
それがわかれば別方面からのアプローチも可能かと思いますが・・・

【13825】Re:エクセルファイルが開いているかどうか
回答  Jaka  - 04/5/14(金) 14:27 -

引用なし
パスワード
   こんにちは。

>エクセルのVBAから、ファイルサーバ(ネットワークサーバ)上のあるエクセルファイルが開いているかどうかを調べたいとおもっています。

だけだったら、
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?page=&no=8317&mode=tre&id=Excel&cmd=jmp

【13841】Re:エクセルファイルが開いているかどうか
お礼  poch  - 04/5/14(金) 22:34 -

引用なし
パスワード
   ありがとうございます。
何がやりたいか? ですが、VBAでファイルサーバ上に保管されているエクセルファイルに、同じある情報を書き込みたいのです。 書き込みたいファイルは沢山あるので、ひとつひとつ開いて書き込むのが面倒なので、VBAでやろうとしてます。

誰かが既に開いているエクセルファイルを開くと、○○○さんが開いています、編集可能になったら通知しますか? というようなメッセージがでます。 つまり、エクセルは誰が開いているのか認識していることになります。 これをVBAで取得できないのが悔しいです。 このユーザ情報は、おそらく、エクセルのツール→オプション、全般タブのユーザ情報であって、ネットワークのユーザ情報でないことはわかっています。

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

【13847】Re:エクセルファイルが開いているかどうか
回答  ちゃっぴ E-MAIL  - 04/5/15(土) 2:59 -

引用なし
パスワード
   ▼poch さん:
>ありがとうございます。
>何がやりたいか? ですが、VBAでファイルサーバ上に保管されているエクセルファイルに、同じある情報を書き込みたいのです。 書き込みたいファイルは沢山あるので、ひとつひとつ開いて書き込むのが面倒なので、VBAでやろうとしてます。

読取専用で開いたファイルはセルに出力し、再度実行するという形をとっては?
もしくは、ブックの共有を使用するとか・・・
一度ローカルにコピーし、変更作業を行った上で元の場所にコピーするとか

>
>誰かが既に開いているエクセルファイルを開くと、○○○さんが開いています、編集可能になったら通知しますか? というようなメッセージがでます。 つまり、エクセルは誰が開いているのか認識していることになります。 これをVBAで取得できないのが悔しいです。 このユーザ情報は、おそらく、エクセルのツール→オプション、全般タブのユーザ情報であって、ネットワークのユーザ情報でないことはわかっています。

BuiltinDocumentProperties で最後に保存したユーザー名は取得できますが・・・
内部的には処理していても、取得する術はないのでは・・・
そういうの他にもいろいろとありますので

【13848】Re:エクセルファイルが開いているかどうか
回答  ちゃっぴ E-MAIL  - 04/5/15(土) 3:37 -

引用なし
パスワード
   すいません前言撤回します。
WriteReservedBy こんなのありました。

【13861】Re:エクセルファイルが開いているかどうか
回答  IROC  - 04/5/15(土) 12:20 -

引用なし
パスワード
   >これをVBAで取得できないのが悔しいです。

Jakaさんと私が回答したものでは出来ませんでしたか?

【13863】Re:エクセルファイルが開いているかどうか
発言  ちゃっぴ E-MAIL  - 04/5/15(土) 12:45 -

引用なし
パスワード
   ▼IROC さん:
>>これをVBAで取得できないのが悔しいです。
>
>Jakaさんと私が回答したものでは出来ませんでしたか?

読み取り専用で開いているか判別は出来ますが、それだけですと属性が「読み取り専用」また、アクセス権が「読取専用」であるか事前に調査してやる必要があると思います。

まあ、今回の件はそこまで考慮する必要もないかと思いますが・・・

ちなみに属性が読み取り専用の場合のWirteReservedとWriteReservedByの値を
調べてみました。

 属性    WirteReserved       WriteReservedBy  
読取専用     False         自分のユーザ名
 標準      True      書き込み権限を持つユーザ名 

ご参考までに

【13922】Re:エクセルファイルが開いているかどうか
お礼  poch  - 04/5/17(月) 13:53 -

引用なし
パスワード
   ありがとうございました。
開いているかどうかは貴殿らの方法ですっきり解決しました!!

【13923】Re:エクセルファイルが開いているかどうか
お礼  poch  - 04/5/17(月) 14:08 -

引用なし
パスワード
   いろいろありがとうございました。
誰がエクセルファイルを開いているかは取得できないということがよく理解できました。結局、下記のコードで強引に誰が開いているかを表示させるようにしました。

Workbooks.Open Filename:="ファイル.xls", notify:=False

11821 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free