Dùng VBA để thay đổi địa chỉ IP

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Đề tài này xuất phát từ 1 nhu cầu thực tế. Tôi dùng Laptop có kết nối Wireless
- Ban ngày, khi đi làm, tôi phải set IP cho phù hợp với mạng tại cty
- Lúc về nhà tôi phải set lại IP theo chế độ tự động
Cảm thấy ngày nào cũng làm công việc nhàm chán này và đôi lúc lại gõ nhầm số (mắt kém) nên tôi có ý định viết ra 1 code VBA với 2 chức năng:
- Set IP theo những thông số cho sẳn
- Set IP theo chế độ tự động
Loay hoay mấy ngày nay, cuối cùng cũng thành công
PHP:
Private Sub SetIp(nwName As String, varIp As String, varSm As String, _
                 varGw As String, varDNS1 As String, varDNS2 As String)
  Dim sComm1 As String, sComm2 As String, sComm3 As String, sComm4 As String
  On Error Resume Next
  sComm1 = "netsh interface ip set address name=""" & nwName & """ source=static addr=" & varIp & " mask=" & varSm
  sComm2 = "netsh interface ip set address name=""" & nwName & """ gateway=" & varGw & " gwmetric=0"
  sComm3 = "netsh interface ip set dns name=""" & nwName & """  source=static addr=" & varDNS1
  sComm4 = "netsh interface ip add dns name=""" & nwName & """ addr = " & varDNS2
  With CreateObject("Wscript.Shell")
    .Run "cmd /c " & sComm1, 0, True
    .Run "cmd /c " & sComm2, 0, True
    .Run "cmd /c " & sComm3, 0, True
    .Run "cmd /c " & sComm4, 0, True
  End With
  MsgBox "Finish"
End Sub
PHP:
Private Sub AutoIP(nwName As String)
  Dim sComm1 As String, sComm2 As String
  sComm1 = "netsh interface ip set address name=""" & nwName & """ dhcp"
  sComm2 = "netsh interface ip set dns name=""" & nwName & """ dhcp"
  With CreateObject("Wscript.Shell")
    .Run "cmd /c " & sComm1, 0, True
    .Run "cmd /c " & sComm2, 0, True
  End With
  MsgBox "Finish"
End Sub
PHP:
Sub Execute_SetIP()
  Dim nwName As String, varIp As String, varSm As String
  Dim varGw As String, varDNS1 As String, varDNS2 As String
  nwName = "Wireless Network Connection"
  varIp = "211.54.133.251"
  varSm = "255.255.252.0"
  varGw = "211.54.135.253"
  varDNS1 = "211.54.128.1"
  varDNS2 = "211.54.135.251"
  SetIp nwName, varIp, varSm, varGw, varDNS1, varDNS2
End Sub
PHP:
Sub Execute_AutoIP()
  Dim nwName As String
  nwName = "Wireless Network Connection"
  AutoIP nwName
End Sub
Để set IP theo các thông số cho trước, chạy sub Execute_SetIP
Để set IP theo chế độ tự đong, chạy sub Execute_AutoIP
Toàn bộ code dựa trên các thao tác khi dùng lệnh DOS (khá đơn giản). Mời các bạn tham khảo file đính kèm
Lưu ý: Nếu có nhu cầu giống tôi, các bạn phải thay đổi các thông số Network Name, IP Address, Subnet Mask, Default Getway, DNS1 DNS2... cho phù hợp với mạng mình đang dùng nhé
 

File đính kèm

  • ChangeIP_Address.xls
    25 KB · Đọc: 153
Đổi IP qua VBS

VBA cũng đổi IP được nhưng tôi góp gió thành bão một chút. Đổi IP bằng VBS chỉ cần Click chuột. Mọi người ngâm cứu nhé
 

File đính kèm

  • Change IP.zip
    1.1 KB · Đọc: 208
VBA cũng đổi IP được nhưng tôi góp gió thành bão một chút. Đổi IP bằng VBS chỉ cần Click chuột. Mọi người ngâm cứu nhé
Bạn chỉ thay đổi IP Address, còn Network Name, Subnet Mask, Default Getway, DNS thì bạn tự mình điền vào ---> Sao mà được chứ!
Ngoài ra code này vẫn còn lỗi đấy nhé
 
Dear ndu96081631!

Code tôi gửi lên chỉ mang mục đích tham khảo thôi. Tùy theo thực tế để mọi người chỉnh sửa chứ.
ngoài IP, DSN... bạn chỉ thay dòng cố định đó bằng input box là ok. Trong code trên ngày xưa tôi làm theo cố định số IP, DSN... như vậy nên chắc bạn chưa hiểu./-*+/
 
Lần chỉnh sửa cuối:
Dear ndu96081631!

Code tôi gửi lên chỉ mang mục đích tham khảo thôi. Tùy theo thực tế để mọi người chỉnh sửa chứ.
ngoài IP, DSN... bạn chỉ thay dòng cố định đó bằng input box là ok. Trong code trên ngày xưa tôi làm theo cố định số IP, DSN... như vậy nên chắc bạn chưa hiểu./-*+/
Ẹc... Ẹc... tôi nhìn vào như đám rừng, chẳng hiểu tí nào!
Nếu dùng lệnh DOS thì tôi làm vầy:
Mã:
Set nwName="Wireless Network Connection"
Set varIp=211.54.133.251
Set varSm=255.255.252.0
Set varGw=211.54.135.253
Set varDNS1=211.54.128.1
Set varDNS2=211.54.135.251 

netsh interface ip set address name=%nwName% source=static addr=%varIp%  mask=%varSm%
netsh interface ip set address name=%nwName% gateway=%varGw% gwmetric=0
netsh interface ip set dns name=%nwName% source=static addr=%varDNS1%  
netsh interface ip add dns name=%nwName% addr =%varDNS2%
Như vậy nếu ai đó dùng code này sẽ thấy ngay chổ cần thay đổi cho phù hợp chính là 6 dòng đầu tiên
 
Vậy các bác cho e hỏi cái này co làm cho người khác không thay đổi IP address được không?

vì trong cty em mấy máy tính cứ thi nhau thay đổi Ip, mà em thì không dùng cách nào qlys được.

Nếu cứ vào regedit mà phân quyền không cho thay thì rất mệt. Mà họ lại biết và làm ngược lại.
 
Web KT
Back
Top Bottom