Attribute VB_Name = "xGetComputerName関数"
' @(h) xGetComputerName関数.bas                         ver 1.3 ( '98.10.08  )

' @(s)
'  コンピュータ名を取得する関数モジュール
'  本モジュールはテスト用コードモジュールです。
'
Option Explicit

Public Const MAX_COMPUTERNAME_LENGTH = 64
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Attribute GetComputerName.VB_ProcData.VB_Invoke_Func = " \n14"

Sub xGetComputerNameのテスト()  'ExcelまたはVisual Basicで実行してください。
Attribute xGetComputerNameのテスト.VB_ProcData.VB_Invoke_Func = " \n14"
    MsgBox "(" & xGetComputerName & ")"
End Sub

' @(f)
'
' 機能      : コンピュータ名を取得する関数
'
' 返り値    : アプリケーションのフルパス名
'
' 引き数    : なし
'
' 機能説明  : コンピュータ名を取得する関数
'
' 備考      : UnicodeとAsciiに注意。
'
Function xGetComputerName() As String
Attribute xGetComputerName.VB_ProcData.VB_Invoke_Func = " \n14"
    Dim lpBuffer$, nSize&, dl&
    lpBuffer$ = String$(MAX_COMPUTERNAME_LENGTH + 1, &H0)
    nSize& = MAX_COMPUTERNAME_LENGTH
    dl& = GetComputerName(lpBuffer$, nSize&)
    'Visual Basic
    'xGetComputerName = StrConv(LeftB(StrConv(lpBuffer$, vbFromUnicode), nSize& ), vbUnicode)
    'Excel
    'xGetComputerName = LeftB(lpBuffer$, nSize&)
    xGetComputerName = Left(lpBuffer$, InStr(1, lpBuffer$, Chr(&H0)) - 1)
End Function