【VBA】コンピュータ名・ユーザー名を取得する

エクセルVBAでよく使うコードの備忘録。VBAでコンピュータ名やユーザー名を取得するコード。WshNetworkオブジェクトを使用します。

スポンサーリンク

事前準備

VBAでPC名やユーザー名を取得するには、参照設定が必要です。VBAのコードエディタから「ツール > 参照設定」と進み、「Windows Script Host Object Model」にチェックを入れておきます。(参照設定をしない場合は、後述のサンプルコードをご参照ください。)

WshNetworkObject

コンピュータ名やユーザー名を取得するには、WshNetworkObjectを使用します。オブジェクトを生成し、「ComputerName」プロパティ・「UserName」プロパティにアクセスしてやれば、コンピュータ名とユーザー名が取得できます。

サンプルコード(参照設定あり)

Public Sub GetUserPcName()
    
    '--- WshNetworkオブジェクトを生成 ---'
    Dim WshNetworkObj As IWshRuntimeLibrary.WshNetwork
    Set WshNetworkObj = New IWshRuntimeLibrary.WshNetwork
    
    '--- コンピュータ名を取得 ---'
    Dim pc_name As String
    pc_name = WshNetworkObj.ComputerName
    
    '--- ユーザー名を取得 ---'
    Dim user_name As String
    user_name = WshNetworkObj.UserName
    
End Sub

ちなみに、参照設定を行わない場合は以下のようになります。「WshNetwork」オブジェクトを生成する部分の2行が異なっています。

サンプルコード(参照設定なし)

Public Sub GetUserPcName()
    
    '--- WshNetworkオブジェクトを生成 ---'
    Dim WshNetworkObj As Object
    Set WshNetworkObj = CreateObject("WScript.Network")
    
    '--- コンピュータ名を取得 ---'
    Dim pc_name As String
    pc_name = WshNetworkObj.ComputerName
    
    '--- ユーザー名を取得 ---'
    Dim user_name As String
    user_name = WshNetworkObj.UserName
    
End Sub