教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA API操作】コンピュータ名を取得(GetComputerName)する方法を教えて!

GetComputerName関数は、Windows APIの一部であり、実行中のコンピュータの名前を取得するために使用されます。この関数は、コンピュータ名を格納するバッファを指定して呼び出すことができます。

API宣言

まず、GetComputerName関数をExcel VBAで使用するために、以下のAPI宣言が必要です。

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

この宣言により、GetComputerName関数を使用するための準備が整います。

使い方

GetComputerName関数を使用するには、コンピュータ名を格納するバッファを指定する必要があります。以下のコードは、GetComputerName関数を使用して、コンピュータ名を取得する例です。

Sub GetComputerName()
    Dim buffer As String * 256
    Dim length As Long
    length = Len(buffer)
    ' コンピュータ名を取得する
    GetComputerName buffer, length
    ' コンピュータ名を表示する
    MsgBox "コンピュータ名は " & Left(buffer, length) & " です。"
End Sub

このコードでは、変数bufferを256バイトの文字列型で宣言しています。この変数に、コンピュータ名を格納します。length変数に、buffer変数の長さを設定します。
GetComputerName関数を呼び出すために、GetComputerName関数にbufferとlength変数を渡します。GetComputerName関数は、実行中のコンピュータの名前をbuffer変数に格納します。その後、MsgBox関数を使用して、コンピュータ名を表示します。

プログラミング例

以下のコードは、GetComputerName関数を使用してコンピュータ名を取得し、セルに表示する例です。

Option Explicit

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

Sub GetComputerNameExample()
 Dim buffer As String * 256
 Dim length As Long
 length = Len(buffer)
 ' コンピュータ名を取得する
 GetComputerName buffer, length
 ' コンピュータ名をセルに表示する
 Range("A1").Value = Left(buffer, length)
End Sub

このコードでは、GetComputerName関数を使用して、コンピュータ名をbuffer変数に格納します。その後、Rangeオブジェクトを使用して、A1セルにコンピュータ名を表示します。

まとめ

GetComputerName関数を使用することで、現在実行されているコンピュータの名前を取得することができます。Windows APIを使用することで、より高度な機能を実現することができますので、是非活用してみてください。