Excel VBA:コンピュータ名を取得する|GetComputerNameA

Windows APIのGetComputerNameAを使用し、コンピュータ名を取得するExcel VBAです。




Homeに戻る > Excel プログラムのTipsへ

特定のコンピュータのみ動作させるようなアプリを作成する場合、掲載しているようなVBAを使用します。

またデータに登録したコンピュータ名を含める場合などにも使用します。

コンピュータ名を取得するには、Windows APIのGetComputerNameAを使用します。

GetComputerNameAの構文

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

戻り値:関数が成功すると0以外の値が返り、関数が失敗すると0が返ります。

  • lpBuffer:コンピュータ名が格納されます。
  • nSize:lpBufferのサイズを指定します。

関連する「Excelのバージョンを調べる」を掲載していますので参照してください。



コンピュータ名を取得するVBAコード


ExcelシートとVBA入力画面

シートにコマンドボタンを配置します。


GetComputerNameAの宣言文、ExGetComputerNameプロシージャ、CommandButton1のクリックイベントを入力します。


VBAコードの解説

  • Windows APIのGetComputerNameAを宣言します。
ExGetComputerNameプロシージャ
  1. コンピュータ名が格納されるバッファ変数を宣言します。
  2. GetComputerNameAを実行します。
  3. バッファの終端のNull位置を取得します。
  4. バッファからコンピュータ名を取り出します。
CommandButton1のクリックイベント
  • ExGetComputerNameプロシージャを呼び出します。

ExcelシートのVBAコード

Option Explicit

'コンピュータ名を取得する
Private Declare Function GetComputerName Lib "kernel32" Alias _
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

'コンピュータ名を取得する
Function ExGetComputerName() As String
    Dim Buf As String
    Dim lRet As Long
    Dim ln As Long
    
    '空文字列の作成
    Buf = Space$(255)
    lRet = GetComputerName(Buf, 255)
    'Null位置を調べる
    ln = InStr(1, Buf, vbNullChar)
    If ln <> 0 Then
        'NULLからの取り出し
        ExGetComputerName = Left(Buf, ln - 1)
    Else
        ExGetComputerName = Buf
    End If
End Function

Private Sub CommandButton1_Click()
    CommandButton1.Caption = ExGetComputerName
End Sub

実行したExcelシート

コマンドボタンにVBAを実行したコンピュータ名が表示されました。


Excel Tipsメニューへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved