Find Computer Name in Excel VBA
In this page, get three different vba code to get Computer name.
- Environment variable
- Windows Api
- wScript.Network
To get the computer name or the host name there can be more multiple ways. But, one of these could serve the purpose.
1. Get Computer name in VBA using Eniron
In here we are going to use the environment variable.
Here is the code to get hostname or computername.
Function GetComputerName() As String Dim sHostComputer As String 'Get Host Name or PC name from Environment variable sHostComputer = VBA.Environ$("computername") 'Return Computer Name GetComputerName = sHostComputer End Function
This can also be verified from the command prompt itself.
Dos Cmd Environment Variable for Computer Name
To display the computer name from dos command prompt SET command can be used. This value is stored in the environment variable name COMPUTERNAME
Type command: >SET Computername
This will display the computer name as how it is displayed in the above Vba code.
2. Find Computer Name using Windows API
This simple code uses a Windows Api present in kernel 32 dll. This also returns the same value as previous one.
Just that, this can be used in case the above fails.
Private Declare Function apiGetComputerName Lib "kernel32" Alias _ "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Sub getComputername() 'Create String Variable to get computer/host/machine name Dim sComputerName As String sComputerName = VBA.String$(50, 0) 'Call Api to get the Computer name Call apiGetComputerName(sComputerName, 50) MsgBox sComputerName End Sub
The above function will not work, if You did not allocate or initialize the string variable.
Before calling the function the string is supposed to have a variable with space to hold the return value.
I tried it once without allocating, the Excel application stopped to respond and restarted. So, it is better to save the work before trying the above code.
3. VBA code – Get Computer name using wScript
This wScript is a method that we can use to run vbscript or javascript code.
We use this module in here to get the Network host or computername.
Sub wScript_Getcomputername() 'Define Variable/Objects to get Computer name Dim wScriptObj As Object Dim sComputerName As String 'Create wScript object Set wScriptObj = CreateObject("WScript.Network") 'Display Computername MsgBox wScriptObj.ComputerName MsgBox wScriptObj.UserDomain End Sub
This method can also be used in a vbscript code.
You can use any one of these methods to get the computer name, domain name, user name etc.,