• ベストアンサー

ネット上PCのエクセルのユーザーIDを検索したい

お世話になります。 可能かどうかわからず、ここに質問させていただきます。 ネット上PCのそれぞれにインストールされているエクセルのユーザーIDを検索し、どのPC(コンピュータ名)にインストールされているものか確認することは可能でしょうか? なぜこのようなことをしたいのか説明しますと、 ネット上で共有しているエクセルファイルを開こうとすると、先に誰かが開いている場合、「○○.xlsは編集の為ロックされています。使用者は'AAA'です。」とメッセージが出てきますが、この使用者が誰なのかが分からないんです。「通知」というボタンがありますがこれは、後に開こうとした人に編集できるようになった旨を知らせる通知のようですし・・・ 使用環境はWindowsXP Pro(SP3) Excel2003(SP3) ネットワークの規模はPC約100台 ちょっと漠然としていますが、VBAなり、フリーソフトなど手法はなんでもかまいません。 ご存知の方、ご教示お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.5

>(エクセルユーザーIDが自分の管理下にない状態で) ...という意味を、私が今ひとつ理解してないかもしれませんが 深く考えないなら 『ネット上で共有しているエクセルファイル』のWorkbook_Openイベントで ユーザー識別情報を外部ファイルに書き出して、調べたい時にそれを参照すれば良いです。 'ThisWorkbookモジュール Option Explicit Private Sub Workbook_Open()   Dim CSset As Object   Dim cs  As Object   Dim fName As String   Dim n   As Long   Dim tmp(0 To 3) As String   On Error Resume Next   If ThisWorkbook.ReadOnly Then Exit Sub   tmp(0) = Now()   tmp(1) = "failure"   Set CSset = CreateObject("WbemScripting.SWbemLocator") _         .ConnectServer _         .ExecQuery("Select * From Win32_ComputerSystem")   For Each cs In CSset     tmp(1) = "DomainName:" & cs.Domain     tmp(2) = "CompName:" & cs.Name     tmp(3) = "UserName:" & cs.UserName   Next      n = FreeFile   fName = ThisWorkbook.FullName   fName = Left$(fName, InStrRev(fName, ".") - 1) & "user.txt"   Open fName For Output As #n   Print #n, Join(tmp, vbTab)   Close #n   Set CSset = Nothing End Sub さらに簡易的で良いなら : Dim n As Long Dim tmp(0 To 2) As String On Error Resume Next If ThisWorkbook.ReadOnly Then Exit Sub tmp(0) = Now() tmp(1) = "failure" tmp(1) = "CompName:" & Environ("computername") tmp(2) = "UserName:" & Environ("username") n = FreeFile Open ThisWorkbook.FullName & "_user.txt" For Output As #n Print #n, Join(tmp, vbTab) Close #n : な感じでも。

epl1214
質問者

補足

あっ、なるほど。 これはいいですね。 ただ、そこそこな量を共有ファイルにしてあり、全てにコレを仕込むのも大変ですね。 今後作成する資料や頻繁に見る共有ファイルは、利用させてもらおうと思います。 また、簡単なロック情報ファイルとしても応用も出来そうですね。 ありがとうございました。 >(エクセルユーザーIDが自分の管理下にない状態で) 書き方が抽象的ですいません。 1.前略・・・エクセルの競合メッセージが出力されます。   そこには「使用者は○○○です」と表示されています。   (○○○はエクセルのユーザー名) 2.「このユーザー名って誰だろう?」となった時(今まさにここで   困ってます。誰がロックしてるかわからないんです。) 3.予めエクセルのユーザー名をWindowsのログイン名やコンピュータ   名にしておく。(最初にend-uさんに教えていただいた方法等で)   ただし、この方法は、管理者がコンピュータ名やログイン名で   個人を特定できることが前提(つまり、管理下に置く)ですね。   ・・・と言いたかったんですが、分かりますでしょうか?   説明ベタですいません。 また、補足として、ウチのネットワークはユーザー管理されていません。 ノンパスでWindowsを開くことが出来ます。 (これはこれで、問題なんですけど・・・)

その他の回答 (5)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.6

老婆心ながら最後のアドバイス。これにて失礼します。 >管理者権限(というか、ウチはどのクライアントもユーザーIDはアドミニストレータでノンパスワードです。)でアクセスしに行ってるんですが・・・ >また、補足として、ウチのネットワークはユーザー管理されていません。 >ノンパスでWindowsを開くことが出来ます。 >(これはこれで、問題なんですけど・・・) それはそれで問題、ではなく『それこそ問題』です。 そのような環境で >ネット上PCのそれぞれにインストールされているエクセルのユーザーIDを検索し、どのPC(コンピュータ名)にインストールされているものか確認することは可能でしょうか? >できれば、今現在(エクセルユーザーIDが自分の管理下にない状態で) >調べる方法はないでしょうか? 解消すべき課題の優先順位の設定が間違っているのではないですか? すでに有効なアドバイスはしてます。ちょっとくらいは工夫や応用をしてください。 >『使用中のメッセージ』に表示される使用者はApplication.UserNameで、これは手作業でも、VBAからでも設定可能です。 >誰が(もしくはどのPCが)使用中か識別できるようなUserNameを設定すれば良いですね。    ~~~~~~~~~~~~~~~~~~~ 共有ファイルを使う対象者に、BookOpen時にマクロが走るようにした設定用ファイルをメールでもなんでも使って配信し、 PC名をApplication.UserNameに設定してもらってください。 それさえもできない状況ならネットワークユーザーの管理はあきらめたほうが良いです。

epl1214
質問者

お礼

いや、おっしゃるとおりです。 「問題あり」のネットワーク環境ですので、やることは山積みです。 まずは、ご提供いただいた事を実践していきたいと思います。 アドバイスありがとうございました。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

ネットワークユーザーのユーザーIDを取得するのが目的なのか、 Excelファイル使用が競合した時に、誰が使用中か判るようにする事が目的なのか、ですね。 後者の場合、Excelの標準機能『使用中のメッセージ』を利用できるなら、それにこした事はないと思います。 『使用中のメッセージ』に表示される使用者はApplication.UserNameで、これは手作業でも、VBAからでも設定可能です。 誰が(もしくはどのPCが)使用中か識別できるようなUserNameを設定すれば良いですね。 ※但し、企業内ルールでApplication.UserNameの変更が禁止されていたりすると話は別。 手作業で設定するのが面倒なら、 'ThisWorkbookモジュール Option Explicit Private Sub Workbook_Open()   Dim x      On Error GoTo errHndr   x = CreateObject("Wscript.Network").UserName   If MsgBox(x & " をExcelのユーザー名として登録します。", vbOKCancel) = vbOK Then     Application.UserName = CStr(x)   End If errHndr: End Sub こんな感じで、BookOpen時にマクロが走るようにしたxlsファイルを設定用として配付し、 一回だけ実行してもらうという事も考えられます。

epl1214
質問者

補足

ご回答ありがとうございます。 なるほど、エクセルのユーザーIDをログインユーザーIDに変えちゃう わけですね。確かにこの方法をやっておけば、特定できますね。 ただ、これも予め全てのPCのエクセルユーザーIDを管理下に収めて おくという前提であれば可能ということですね。 できれば、今現在(エクセルユーザーIDが自分の管理下にない状態で) 調べる方法はないでしょうか? これは、これで、今後の為に活用させていただきます。 有益な情報ありがとうございました。

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.3

>・・・ネットワークの規模はPC約100台 で 1つの Exell ファイルを 使ってる状態が 異常と思います。 もっと NETの状態に適したデーターを構築しないと 先々とんでもない トラブルに会う可能性があります。 Access でも可能ですが・・・せいぜいで 10台規模 使うタイミングによっては 3台でも 障害が出てきます。 個人で管理するにはOffice系では 10台程でしょう。 SQL サーバー や オラクル 等の導入も含めて  Accsee の ホーム、レポート 等を利用しながら 構築する事が  良いと思います。 後は、該当の EXELL ファイルにフルアクセス出来る PCを制限するするとか・・・・ 閲覧だけなら 読み取り専用モードで開いてもらうとか・・・ それなりに 管理をしないと ・・・ と思います。 上司(経営者)の方向は如何なんでしょう?  問題が大きくなってからでは 手遅れですので 良く検討して話し合って下さい。

epl1214
質問者

補足

ごめんなさい、書き方悪かったですかね。 一つのエクセルファイルを100台で使っているわけではないです。 あくまでもネットワークの規模がそれぐらいということで、 そのネットワーク環境の中で、エクセルファイルの競合があった時、 エクセルのユーザーIDのみで、端末を特定する方法を知りたかっただ けです。ネットワークの環境が10台ぐらいなら、しらみつぶしに 一台ずつ確認していく方法もありですが、100台(+VPNで遠方にも)はちょっと・・・ で、質問させていただいた次第です。

  • WDY
  • ベストアンサー率27% (121/435)
回答No.2
epl1214
質問者

補足

ご回答ありがとうございます。 おっこれは!と思って、手順どおり進めていったんですが、 「コンピュータの管理」の所で、共有フォルダの「開いているファイル」 をクリックすると、 「Windowsクライアントのセッション一覧を読み取り中にエラーが発生しました:エラー5:アクセスが拒否されました。」 と出てしまいます。 管理者権限(というか、ウチはどのクライアントもユーザーIDはアドミニストレータでノンパスワードです。)でアクセスしに行ってるんですが・・・ もう少し調べてみます。 情報ありがとうございました。

  • WDY
  • ベストアンサー率27% (121/435)
回答No.1

CVSだったかVSSだったか忘れましたが確かPC名まで見れた様な気がします。(うろ覚えです

epl1214
質問者

補足

早速のご回答ありがとうございます。 ネットで調べてみました。 CVS:Concurrent Version System? VSS:Visual SourceSafe? いずれもバージョン管理ソフトのようですね。 (ネットで調べた結果が見当違いだったらすいません。) 上記ソフトの場合は、既にこれらで管理されていることが前提のよう ですので、せっかく教えていただいたのですが利用できそうにありません。

関連するQ&A

  • エクセル 乱数でユーザーID

    エクセル2002使用です 一定規模の人数にユーザーIDなどを割り振るような目的で使用したいのですが、エクセルのrand関数もしくはVBAのrnd関数を使って、英数字を組み合わせて乱数を発生させることは可能でしょうか? よろしくお願いします。

  • エクセルVBAで「通知」を選ぶには?

    ネットワーク上にあるエクセルファイルを開こうとする場合、誰かが先に開いている場合、「使用中のファイル」というダイアログが出てきて、「xxx.xlsは編集のためロックされています」とメッセージが表示され、ボタンが「読み取り専用」「通知」「キャンセル」と出ます。 通知を選ぶと読み取り専用で開かれ、先に開いた人が終了した場合、OKになった旨の連絡がきます。 この「通知」を選ぶのと同様の操作をVBAで行うにはどのような命令を行ったらよいのでしょうか? 要は「読み取り専用」で開いて、先に開いた人が閉じた場合、メッセージを出したいのですが、どのようにVBAを作ったらよいのでしょうか? よろしくお願い申し上げます。

  • 共有しているエクセルファイルをOffce2003で開こうとすると他で開いていないのに読み取り専用になってしまいます。

    MS VistaでOffice2003Proを使用しています。 MS Windows2000 Serverでエクセルのファイルを共有しているのですが、他のPCで開いていないのにも関わらず、「xxx.xlsは編集のためロックされています。使用中は'xxx'です。[読み取り専用]で開くか、または、読み取り専用で開き、ほかの人がファイルの使用を終了したときに通知を受け取るには、[通知]をクリックします。」と出てしまいます。 毎回ではなく、頻繁にでます。また、すべてのファイルではなく、特定のファイルです。これらのファイルに共通していることは、VBAでマクロが組んであります。 ご回答よろしくお願いいたします。l

  • エクセルVBAではRounddown関数はつかえないのでしょうか?

    Excel2003SP2でVBAを使っています。 AAA = RoundDown(Range("A1"), 0) と入力してコンパイルすると 「コンパイルエラー SubまたはFunctionが定義されていません」 と表示されます。 エクセルVBAではRounddown関数は使用できないのでしょうか? それとも私の記述が何か間違っているのでしょうか

  • エクセルが編集できなくなった

    PCを起動してxlsファイルを開き編集して保存はできるのですが、2度目に開く時に 「ファイルは使用中です」 の小窓が出てきます 再起動すれば同じように1回目だけ編集、保存ができます 詳細は ファイルは使用中です ○×.xlsは現在、 △△ によって編集されています。編集する必要がある場合は、[通知]を選択すると、ファイルが保存されたときに編集が可能になったことを知らせるメッセージが表示されます。 右に読み取り専用、通知、キャンセルの3つのボタンがでてきます 通知、で開いても読み取り専用になってしまいます 昨日まで大丈夫でした お助け下さい WINXP、EXCEL97、VAIORX63

  • エクセル2000で表示されるコメントの意味を教えてください

    よろしくお願いします。エクセルはほとんど使いませんので、次のような表示が出て、よく分からなくて困っています。他の人から、エクセルのファイルをいただき、それを自分のパソコンで開くと、  使用中のファイル  ○○○xlsは編集のためロックされています。使用者は ×××です。 ドキュメントのコピーを読み取り専用で開き、他の人がファイルの使用を終了したときに、通知を受けるには 通知 をクリックします。  という表示がでます。エクセルは2000を使用しています。 この表示の意味を教えてください。よろしくお願いします。

  • ExcelVBA ユーザーフォームのコードがない

    いつもお世話になっています。 Excel vbaで質問させてください。 あるExcelブック(test.xlsとします)を開くと、ユーザーフォーム(と思う)が表示されます。 (この時、Excelアプリケーションは「表示」されていてモーダルの状態です) ユーザーフォームで日付を選び、「これでOK」ボタンをクリックすると 新規ブックとして「text_0614.xls」が出来て、これが表示ブックとなります。 (元のtest.xlsは閉じられています) vbaコードの修正がしたくて、VBEから作業しようとしたところ ユーザーフォームモジュールも、標準モジュールも何も見当たりません。 Thisworkbookのイベントも何も書いてありません。 プロジェクトにパスワードがかかっているのかと思いましたが、もしそうだとしても プロジェクトウィンドウに、「フォーム」というフォルダは表示されると思いますし、 また、ダブルクリックしてもパスワードを求められることがありませんので パスワードがかかっているようには見えません。 これはExcelVBAのユーザーフォームじゃないのでしょうか?(VB?) または、もし、この「フォーム」フォルダごと、ユーザーに見せないやり方があるのでしょうか? どなたかご存知の方いらっしゃいましたらご教示ください! WinXP SP3 Excel2003 SP3 使用です。 どうぞよろしくお願いします。

  • エクセルで使用中のファイルを開いたとき

    LAN内で共有しているエクセルのファイルを、誰かが使用中に、別の人が開こうとすると「~.xlsは編集のためロックされています。使用者は○○です。」と表示されますが、この○○に使用者が分かる様に何らかの表示をさせるには、どこの設定を変えればいーですか? 使用者(先に開いたPC)によっては、PC名が出たり、名前だったり、空白('')で表示されたりします。 XPでエクセルは2003です。

  • Excelファイルがロックされて解除できません。

    Excelファイルがロックされて解除できません。 Excel起動中におかしくなった為か、 ファイルを開いてもないのに、開こうとすると 「・・xlsは編集のためロックされています」と出てしまいます。 尚、ファイルはサーバー上に置いてます。 1.ロックを掛けた、ローカルマシンを再起動しました。 2.c:\documents and Settings\ユーザ\Local Settings\Tempのファイルを 別の場所に移動させました。(但し全てのファイルを移動できなかった) 3.コマンドプロンプトのdelコマンドを試しました。 1~3を試したんですが、ロックが解除できません。 Excelは Excel2003 SP3 OfficeはWindowsXP ServicePack3 です。 ロック解除又はファイルを削除したいです。 何か解決する方法はあるでしょうか?

  • VB.NET操作で Excelにビットマップ貼り付け

    下記の環境で開発しています。 VB.NET 2005/XP(sp2)/Excel2003(sp2) ビットマップをExcel2003に貼り付けたいのですが、どなたか手法ご存知ないでしょうか? 画像ファイル(Bitmap)→画面に表示→Excelに画像ファイル(Bitmap)を出力といったイメージなのですが… ※Excelを起動して、名前を付けて保存は今のところ上手くいってるようです。

専門家に質問してみよう