Cách lấy địa chỉ IP, tên máy tính và username
Cách lấy địa chỉ IP
Chào các anh chị GPE,
Xin các anh chị chỉ em cách lấy địa chỉ IP tự như sau:
IP|
?
Em xin cám ơn trước.
Nhân tiện đây em xin chia sẻ với mọi người cách lấy tên máy và user name như sau:
Option Explicit
Private Declare Function GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function ReturnComputerName() As String
Dim rString As String * 255, sLen As Long, tString As String
tString = ""
On Error Resume Next
sLen = GetComputerName(rString, 255)
sLen = InStr(1, rString, Chr(0))
If sLen > 0 Then
tString = Left(rString, sLen - 1)
Else
tString = rString
End If
On Error GoTo 0
ReturnComputerName = UCase(Trim(tString))
End Function
Function ReturnUserName() As String
Dim rString As String * 255, sLen As Long, tString As String
tString = ""
On Error Resume Next
sLen = GetUserName(rString, 255)
sLen = InStr(1, rString, Chr(0))
If sLen > 0 Then
tString = Left(rString, sLen - 1)
Else
tString = rString
End If
On Error GoTo 0
ReturnUserName = UCase(Trim(tString))
End Function
Sub Testem()
Dim iComNm As String
Dim iUsrNm As String
Dim rDate As Date
rDate = Now()
iComNm = ReturnComputerName
iUsrNm = ReturnUserName
MsgBox "You are logged in as the following..." & vbNewLine & _
"Computer : " & iComNm & vbNewLine & _
"Username : " & iUsrNm & vbNewLine & _
"IP Address : ???" & vbNewLine & _
"Date : " & rDate
Sheets("UserLog").Range("A65536").End(xlUp).Offset(1).Value = iComNm
Sheets("UserLog").Range("C65536").End(xlUp).Offset(1).Value = iUsrNm
Sheets("UserLog").Range("D65536").End(xlUp).Offset(1).Value = rDate
End Sub
www.giaiphapexcel.com/diendan/threads/c%C3%A1ch-l%E1%BA%A5y-%C4%91%E1%BB%8Ba-ch%E1%BB%89-ip-t%C3%AAn-m%C3%A1y-t%C3%ADnh-v%C3%A0-username.24504/
Khóa học SprinGO phù hợp
Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ
Con người là một trong những yếu tố quan trọng của công ty, là tài sản quý giá của doanh nghiệp. Chính vì thế,...
Xem khóa học
Tạm thời tôi chưa nghĩ ra cách lấy IP Address, còn Computer name và UserName thì tôi nghĩ sẽ như vầy:
Sub GetComInfo()
Dim p1 As String, p2 As String
On Error Resume Next
p1 = "HKLMSYSTEMControlSet001ControlComputerNameComputerNameComputerName"
p2 = "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultUserName"
With CreateObject("WScript.Shell")
MsgBox .RegRead(p1)
MsgBox .RegRead(p2)
End With
End SubMấy thông số này lưu giử trong Registry thì cứ vào đó mà đọc cho khỏe… đâu cứ thứ gì cũng API…
Có ngắn gọn không?
Vâng! Tôi cũng rất thích API, và đang học nó… Nhưng cũng tùy việc mà xài…
API cũng được, cách thông thường cũng được… miễn.. gọn (chắc ai cũng thích cái vụ "gọn" này rồi)
Tôi cũng đã tìm được code GetIPAddress trên Google rồi, có điều nó chẳng ngon lành gì… Để suy nghĩ cách nào đó cực gọn sẽ đưa lên diển đàn
Cảm ơn bạn đã mách nước.
Ái chà… cái này chắc khá gọn gàng cho việc Get IP Address đây:
Sub Test()
Dim Item
On Error Resume Next
With GetObject("winmgmts:\.rootcimv2")
For Each Item In .ExecQuery("Select * from Win32_NetworkAdapterConfiguration", , 48)
Range("A65536").End(xlUp).Offset(1) = Item.IPAddress(0)
Next
End With
End Sub—————–
Nghe đồn rằng trong VB6 còn có 1 câu lệnh tuyệt chiêu hơn nữa, họ lấy IP bằng cách:
– Đầu tiên vào menu ToolsReferences và add Microsoft Winsock Control 6.0 vào (MSWINSCK.ocx)
– Tiếp theo chỉ dùng 1 câu lệnh ngắn gọn thế này
MsgBox Winsock1.LocalIP
Tuy nhiên thử nghiệm trên VBA thì chẳng ăn thua gì —> Không biết sai chổ nào
Cái vụ IP này nói chung khá rắc rối (không dể như UserName và ComputerName) —> Vì vậy bạn tạm thời chơi kiểu củ chuối như sau:
– Ra được kết quả thì thoát vòng lập luôn (nếu bạn muốn lấy giá trị đầu tiên)
– Lấy kết quả cuối "đè" lên kết quả đầu (nếu bạn muốn lấy kết quả cuối)
Đại khái là thế —> Bạn cứ thử xem
(Tôi cũng không chắc ăn lắm)
Vâng! Đương nhiên tôi tin vào kinh nghiệm của bạn rồi… Nhưng ác cái tôi chỉ mới tập tành VBA… VB thì mới "rờ rờ" sơ qua… API lại càng tịt… nên hàm mà bạn vừa đưa ra ở trên tôi không biết áp dụng vào Excel như thế nào nữa
Rất mong sự chỉ giáo của bạn —> Đã giúp thì giúp cho trót chứ nhỉ!
Cảm ơn bạn trước!
Mọi người đã giúp bạn cái khó nhất rồi, việc ủa bạn là ghép vào thôi. Hãy cố học và làm cho bằng được cái yêu hết sức cơ bản trên nhé.