• ベストアンサー

エクセルでマクロを使いコンピュータ名を表示する

エクセルでマクロを使いコンピュータ名やエクセルの更新年月日などを表示したいのですが可能でしょうか?教えてください。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

ひょんなことから解決の糸口を発見 ThisWorkBookのモジュールに Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) With ThisWorkbook .CustomDocumentProperties("PC_Name") = Environ("ComputerName") .CustomDocumentProperties("User_Name") = Environ("UserName") .CustomDocumentProperties("Saved_Date") = Format(Now, "yyyy/mm/dd hh:nn:ss") End With End Sub Private Sub Workbook_Open() On Error Resume Next With ThisWorkbook.CustomDocumentProperties .Add Name:="PC_Name", _ LinkToContent:=False, _ Type:=msoPropertyTypeString, _ Value:="" .Add Name:="User_Name", _ LinkToContent:=False, _ Type:=msoPropertyTypeString, _ Value:="" .Add Name:="Saved_Date", _ LinkToContent:=False, _ Type:=msoPropertyTypeDate, _ Value:=0 End With End Sub 二つ記述します。 これでメニュー → ファイル → プロパティ の ユーザー設定タブに表示されます。(日時は日付のみ) モジュールで確認したいときは(日時は秒まで表示) 標準モジュールに Sub test() Dim strMsg As String With ThisWorkbook strMsg = _ "PC名= " & .CustomDocumentProperties("PC_Name").Value strMsg = strMsg _ & vbCrLf & "ユーザ名= " & .CustomDocumentProperties("User_Name").Value strMsg = strMsg _ & vbCrLf & "VBAでの保存日= " & .CustomDocumentProperties("Saved_Date").Value strMsg = strMsg _ & vbCrLf & "システム上の保存日= " _ & CreateObject("Scripting.FileSystemObject"). _ GetFile(ThisWorkbook.FullName).DateLastModified End With MsgBox strMsg End Sub ファイルサーバとクライアントマシンで時刻が違っていたり 保存時に時間がかかる場合を考慮すると システム上の保存日を採用するべきですね。 ※最後に保存したコンピュータや人を保存しているだけで  履歴は求められません。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんぱんは。 >このエクセル表が他のコンピュータで更新されていた場合、何処のコンピュータで更新されたかをコンピューター名で判断したいのですが可能でしょうか? 必ずしもコンピュータ名ではありませんが、[共有設定]をしてあれば、Excelの中の、[ツール]-[変更履歴の表示]で、誰が変更したか分かるはずです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 #1 さんとかぶってしまいました。 更新日に関しては、私の方では、同じでしたが、.BuiltinDocumentProperties からと、外部から取得するのでは、秒のずれがあるという話も聞いたことがあります。 Sub GetProperties() Dim CmpName As String Dim LastSave As Date With CreateObject("WScript.Network")  CmpName = .ComputerName 'コンピュータ名 End With With ThisWorkbook  '更新日  LastSave = .BuiltinDocumentProperties("Last Save Time") End With MsgBox "コンピュータ名: " & CmpName & vbCrLf & _     "更新日: " & Format$(LastSave, "yy/MM/dd hh:nn:ss") End Sub

marutin99
質問者

補足

ありがとうございます。このエクセル表が他のコンピュータで更新されていた場合、何処のコンピュータで更新されたかをコンピューター名で判断したいのですが可能でしょうか?

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

コンピュータ名 ?environ("computername")        ↑ コマンドプロンプトのSET コマンドで求められる環境変数です ログオン名だと ?environ("username") ファイル作成日 ?CreateObject("Scripting.FileSystemObject").GetFile("g:\temp\book2.xls").DateCreated ファイル更新日 ?CreateObject("Scripting.FileSystemObject").GetFile("g:\temp\book2.xls").DateLastModified ファイルアクセス日 ?CreateObject("Scripting.FileSystemObject").GetFile("g:\temp\book2.xls").DateLastAccessed エクセルに限らず使えます

marutin99
質問者

補足

ありがとうございます。このエクセル表が他のコンピュータで更新されていた場合、何処のコンピュータで更新されたかをコンピューター名で判断したいのですが可能でしょうか?

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

こんにちは。 コンピュータ名をメッセージボックスに表示 MsgBox CreateObject("Wscript.NetWork").ComputerName エクセルの更新年月日をメッセージボックスに表示 MsgBox ThisWorkbook.BuiltinDocumentProperties("Last Save Time")

marutin99
質問者

補足

ありがとうございます。このエクセル表が他のコンピュータで更新されていた場合、何処のコンピュータで更新されたかをコンピューター名で判断したいのですが可能でしょうか?

関連するQ&A