Accessで簡単!コンピュータ名の取得

AccessVBA

Accessで処理端末のコンピュータ名を取得するには?

プログラム処理中に処理中のコンピュータ名を取得したい場合があります。

シチュエーション

同時利用時の排他制御
Accessを複数端末で同時利用している環境では、月次処理や一括更新など同時実行されると不整合が発生する処理が存在します。処理開始時にコンピュータ名を取得・記録することで、現在どの端末が処理中なのかを判別でき、他端末からの実行を防止できます。

エラー発生時の原因特定
システムエラーや異常終了が発生した際に、コンピュータ名をログとして残しておくことで特定の端末に依存した不具合かどうかを切り分けることができます。ネットワーク設定やローカル環境差異の調査に有効です。

端末別の機能制御
管理者用PCや特定部署の端末のみで利用可能な機能を設けたい場合、コンピュータ名による判定が有効です。これにより特定端末でのみマスタ更新や削除処理を許可するといった制御が実現できます。

バッチ・定期処理の実行端末限定
Accessで作成した集計や外部連携処理を、決められたPCのみで実行したいケースがあります。コンピュータ名をチェックすることで誤った端末からのバッチ実行を防止できます。

利用状況の把握と監査対応
Accessアプリの起動時・終了時にコンピュータ名を記録することで、どの端末がどの程度利用されているかを把握できます。これは内部監査や運用改善のための客観的な利用ログとして活用できます。

コンピュータ名を取得するサンプルコード

サンプルコードを紹介します。

'===============================================================================
'  プロシージャ名:gf_GetComputerName
'  機能 :Windows のコンピュータ名を環境変数から取得します。
'
' 【引数】
'   なし
'
' 【戻り値】
'   コンピュータ名(String)
'   ※取得失敗時は ""(空文字)を返します。
'
' 【処理概要】
'   ・環境変数 "COMPUTERNAME" を参照して取得
'
' 【使用例】
'   MsgBox gf_GetComputerName()
'
'===============================================================================
Public Function gf_GetComputerName() As String

    On Error GoTo ErrHandler

    Dim pcName As String   ' コンピュータ名

    '=== 環境変数から取得 ===
    pcName = Environ$("COMPUTERNAME")

    '=== 結果返却 ===
    gf_GetComputerName = Trim$(pcName)
    Exit Function

ErrHandler:
    gf_GetComputerName = ""
    
End Function

処理方法はとても単純で環境変数を参照して、コンピュータ名を取得しています。

実行結果

MsgBox gf_getComputerName()

イミディエイトウィンドウ等に記載して動作させると、メッセージボックスでコンピュータ名が返ってきます。

別の使い方 ログインユーザー名、ユーザープロファイルのパスを取得

環境変数から取得しているので、このような使い方もできます。

'Windowsログインユーザー名を返す
Environ$("USERNAME")

'ユーザープロファイルのパスを返す
'例)C:\users\xxxxxx
Environ$("USERPROFILE")

最後に

以上がAccessで処理端末のコンピュータ名を取得する方法です。

Accessで処理中の端末のコンピュータ名を取得することで、排他制御やエラー原因の特定、端末ごとの機能制御など、運用の安全性と管理性を大きく向上させることができます。特に複数人・複数端末で利用されるAccessシステムでは、トラブル発生時の切り分けや誤操作防止に直結する重要な情報です。小さな実装で大きな効果が得られるため、安定したAccess運用を目指すのであれば、ぜひ取り入れておきたい仕組みとなるかと思います。

コメント

タイトルとURLをコピーしました