Làm thế nào để lấy kết quả từ dòng lệnh trong cửa sổ MS DOS trong VBA

Liên hệ QC

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,700
Giới tính
Nam
Tôi xin giới thiệu bài viết của Rembo : Ping đến một computer trong VBA

Windows Scripting là một công cụ rất mạnh để làm việc với một network. Bạn có thể làm nhiều thứ với nó.
Trong ví dụ sau sẽ mô tả việc sử dụng đối tượng ShellFileSystem để thực hiện lệnh ping đến một máy chủ trên internet.

Chú ý:

Trong ví dụ này tác giả sử dụng kỹ thuật khai báo trễ (late binding). Nếu bạn muốn dùng kỹ thuật khai báo sớm (early binding) thì bạn phải tham chiếu đến thư viện Microsoft Scripting Runtime.

Các đường dẫn tham khảo khác:

1. http://msdn.microsoft.com/en-us/library/aew9yb99.aspx
2. http://msdn.microsoft.com/en-us/library/d6dw7aeh(VS.85).aspx
3. http://msdn.microsoft.com/en-us/library/aa265319(VS.60).aspx

Bạn hãy đưa đoạn mã sau vào một module:

Mã:
Function sPing(sHost As String) As String

    Dim oFSO As Object, oShell As Object, oTempFile As Object
    Dim sLine As String, sFilename As String

[COLOR="Green"]    ' Khởi tạo đối tượng [/COLOR][COLOR="Blue"]Scripting.FileSystemObject[/COLOR]
    Set oFSO = CreateObject("Scripting.FileSystemObject")
 [COLOR="Green"]   ' Và đối tượng[/COLOR] [COLOR="Blue"]Wscript.Shell[/COLOR] (Shell)
    Set oShell = CreateObject("Wscript.Shell")
    
[COLOR="Green"]    ' Lấy tên tạm[/COLOR]
    sFilename = oFSO.GetTempName

[COLOR="Green"]    ' Thực hiện lệnh[/COLOR] [COLOR="Blue"]Ping[/COLOR] [COLOR="Green"]và lưu vào tập tin với tên được lưu trong biến sFilename[/COLOR]
   [COLOR="Green"] ' Vấn đề này khá thú vị, chúng ta có thể mở rộng cho các lệnh khác.[/COLOR]
    oShell.Run "cmd /c ping " & sHost & " >" & sFilename, 0, True

 [COLOR="Green"]   ' Mở tập tin và đưa nội dung vào biến oTempFile[/COLOR]
    Set oTempFile = oFSO.OpenTextFile(sFilename, 1)

[COLOR="Green"]    ' Bắt đầu quét qua tập tin,[/COLOR]
 [COLOR="Green"]   ' đọc từng dòng rồi đưa chuổi vào biến[/COLOR] [COLOR="Blue"]sPing[/COLOR]
    Do While oTempFile.AtEndOfStream <> True
        sLine = oTempFile.Readline
        sPing = sPing & Trim(sLine)
    Loop

[COLOR="SeaGreen"]    ' Đóng tập tin lại[/COLOR]
    oTempFile.Close

[COLOR="SeaGreen"]    ' Xóa tập tin[/COLOR]
    oFSO.DeleteFile (sFilename)

End Function

Sub [COLOR="Red"]TestPing[/COLOR]()
[COLOR="Green"]    ' Bạn có thể thay địa chỉ[/COLOR] [COLOR="Blue"]scriptorium.serve-it.nl[/COLOR]
 [COLOR="Green"]   ' bằng các địa chỉ khác như:[/COLOR] [COLOR="Blue"]tuoitre.vn[/COLOR]
    MsgBox sPing("scriptorium.serve-it.nl")
End Sub

Và bạn hãy thực thi thủ tục TestPing để xem kết quả.

Cheer,

Lê Văn Duyệt

Nguồn tại đây.
 

File đính kèm

  • VBA_Ping.xls
    30 KB · Đọc: 526
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom