Consulting

Results 1 to 4 of 4

Thread: Get All The Computer Names In My LAN

  1. #1

    Get All The Computer Names In My LAN

    can any one tell me how to Get All The Computer Names In My LAN ?

  2. #2
    Administrator
    VP-Knowledge Base
    VBAX Grand Master mdmackillop's Avatar
    Joined
    May 2004
    Location
    Scotland
    Posts
    14,489
    Location
    MVP (Excel 2008-2010)

    Post a workbook with sample data and layout if you want a quicker solution.


    To help indent your macros try Smart Indent

    Please remember to mark threads 'Solved'

  3. #3
    Distinguished Lord of VBAX VBAX Grand Master Bob Phillips's Avatar
    Joined
    Apr 2005
    Posts
    25,453
    Location
    Here is some code I got a while back from Randy Birch

    [vba]


    Private Const MAX_PREFERRED_LENGTH As Long = -1
    Private Const NERR_SUCCESS As Long = 0&
    Private Const ERROR_MORE_DATA As Long = 234&

    Private Const SV_TYPE_WORKSTATION As Long = &H1
    Private Const SV_TYPE_SERVER As Long = &H2
    Private Const SV_TYPE_SQLSERVER As Long = &H4
    Private Const SV_TYPE_DOMAIN_CTRL As Long = &H8
    Private Const SV_TYPE_DOMAIN_BAKCTRL As Long = &H10
    Private Const SV_TYPE_TIME_SOURCE As Long = &H20
    Private Const SV_TYPE_AFP As Long = &H40
    Private Const SV_TYPE_NOVELL As Long = &H80
    Private Const SV_TYPE_DOMAIN_MEMBER As Long = &H100
    Private Const SV_TYPE_PRINTQ_SERVER As Long = &H200
    Private Const SV_TYPE_DIALIN_SERVER As Long = &H400
    Private Const SV_TYPE_XENIX_SERVER As Long = &H800
    Private Const SV_TYPE_SERVER_UNIX As Long = SV_TYPE_XENIX_SERVER
    Private Const SV_TYPE_NT As Long = &H1000
    Private Const SV_TYPE_WFW As Long = &H2000
    Private Const SV_TYPE_SERVER_MFPN As Long = &H4000
    Private Const SV_TYPE_SERVER_NT As Long = &H8000
    Private Const SV_TYPE_POTENTIAL_BROWSER As Long = &H10000
    Private Const SV_TYPE_BACKUP_BROWSER As Long = &H20000
    Private Const SV_TYPE_MASTER_BROWSER As Long = &H40000
    Private Const SV_TYPE_DOMAIN_MASTER As Long = &H80000
    Private Const SV_TYPE_SERVER_OSF As Long = &H100000
    Private Const SV_TYPE_SERVER_VMS As Long = &H200000
    Private Const SV_TYPE_WINDOWS As Long = &H400000 'Windows95 and above
    Private Const SV_TYPE_DFS As Long = &H800000 'Root of a DFS tree
    Private Const SV_TYPE_CLUSTER_NT As Long = &H1000000 'NT Cluster
    Private Const SV_TYPE_TERMINALSERVER As Long = &H2000000 'Terminal Server
    Private Const SV_TYPE_DCE As Long = &H10000000 'IBM DSS
    Private Const SV_TYPE_ALTERNATE_XPORT As Long = &H20000000 'rtn alternate transport
    Private Const SV_TYPE_LOCAL_LIST_ONLY As Long = &H40000000 'rtn local only
    Private Const SV_TYPE_DOMAIN_ENUM As Long = &H80000000
    Private Const SV_TYPE_ALL As Long = &HFFFFFFFF

    Private Const SV_PLATFORM_ID_OS2 As Long = 400
    Private Const SV_PLATFORM_ID_NT As Long = 500

    'Mask applied to svX_version_major to obtain major version number.
    Private Const MAJOR_VERSION_MASK As Long = &HF

    Private Type SERVER_INFO_100
    sv100_platform_id As Long
    sv100_name As Long
    End Type

    Private Declare Function NetServerEnum Lib "netapi32" _
    (ByVal servername As Long, _
    ByVal level As Long, _
    buf As Any, _
    ByVal prefmaxlen As Long, _
    entriesread As Long, _
    totalentries As Long, _
    ByVal servertype As Long, _
    ByVal domain As Long, _
    resume_handle As Long) As Long

    Private Declare Function NetApiBufferFree Lib "netapi32" _
    (ByVal Buffer As Long) As Long

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (pTo As Any, uFrom As Any, _
    ByVal lSize As Long)

    Private Declare Function lstrlenW Lib "kernel32" _
    (ByVal lpString As Long) As Long


    Public Function GetMachines()
    Dim aryMachines
    Call GetServers(vbNullString, aryMachines)
    End Function


    Private Function GetServers(ByVal sDomain As String, _
    ByRef MachineList As Variant) As Long
    Dim bufptr As Long
    Dim dwEntriesread As Long
    Dim dwTotalentries As Long
    Dim dwResumehandle As Long
    Dim se100 As SERVER_INFO_100
    Dim success As Long
    Dim nStructSize As Long
    Dim cnt As Long

    nStructSize = LenB(se100)
    success = NetServerEnum(0&, _
    100, _
    bufptr, _
    MAX_PREFERRED_LENGTH, _
    dwEntriesread, _
    dwTotalentries, _
    SV_TYPE_ALL, _
    0&, _
    dwResumehandle)

    If success = NERR_SUCCESS Then

    ReDim MachineList(1 To dwEntriesread)
    For cnt = 0 To dwEntriesread - 1

    CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize

    MachineList(cnt + 1) = GetPointerToByteStringW(se100.sv100_name)
    Next
    End If

    Call NetApiBufferFree(bufptr)
    GetServers = dwEntriesread

    End Function


    Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
    Dim tmp() As Byte
    Dim tmplen As Long

    If dwData <> 0 Then

    tmplen = lstrlenW(dwData) * 2

    If tmplen <> 0 Then

    ReDim tmp(0 To (tmplen - 1)) As Byte
    CopyMemory tmp(0), ByVal dwData, tmplen
    GetPointerToByteStringW = tmp
    End If
    End If
    End Function
    [/vba]
    ____________________________________________
    Nihil simul inventum est et perfectum

    Abusus non tollit usum

    Last night I dreamed of a small consolation enjoyed only by the blind: Nobody knows the trouble I've not seen!
    James Thurber

  4. #4
    VBAX Master stanl's Avatar
    Joined
    Jan 2005
    Posts
    1,141
    Location
    depending on how your LAN is set up you might try a simple DOS batch file, if it works you can integrate it into a shell command and parse the output

    [VBA]SETLOCAL ENABLEDELAYEDEXPANSIONREM @echo offclsset output=c:\results.txtif exist %output% del /q %output%for /f %%a in ('net view^|find /i "\\"') do ( set pc=%%a echo PC is !pc:~2!pause echo Locating !pc:~2!... >> %output% for /f "tokens=3" %%r in ('ping !pc:~2! -n 1^|find /i "Pinging"') do ( echo. Found at %%r >> %output%pause ) echo.)[/VBA]

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •