Tự tạo "trình duyệt" Internet với VBA

Quản Trị Mạng - Trên thực tế, về mặt kỹ thuật thì với các hàm điều khiển, thiết lập được nhúng trong chương trình sử dụng VBA, chúng ta có thể nhập dữ liệu input và xử lý thông tin dưới dạng trang web qua ứng dụng tự tạo. Trong bài viết dưới đây, chúng tôi sẽ hướng dẫn các bạn cách sử dụng Word, Access hoặc Excel để đọc văn bản, tài liệu HTML qua website, sau đó hiển thị thông tin qua cửa sổ trình duyệt mới.

Kích hoạt Microsoft Internet Controls:

Việc trước tiên cần làm tại đây là kích hoạt tùy chọn Microsoft Internet Controls của hệ thống. Trong Excel, các bạn chọn menu Developer > Design Mode và nhấn nút View Code. Tuy nhiên, đối với nhiều phiên bản Excel thì cách bố trí menu đó cũng khác nhau:

mở Developer > Design Mode

Trong cửa sổ VBA Editor, nhấn Tools > References:

chọn Tools > References

Tại màn hình References, kéo chuột xuống phía dưới và chọn Microsoft Internet Controls. Đánh dấu check vào ô và nhấn OK:

chọn Microsoft Internet Controls

Và với mã VBA, chúng ta có thể tạo được các đối tượng để lấy thông tin về Internet, tự tạo văn bản HTML để người dùng xem bằng bất kỳ trình duyệt nào.

Input và Output HTML:

Yêu cần cần hoàn tất tại bước này là hiển thị các thông tin sau khi xử lý dưới dạng văn bản HTML. Và tại đây, chúng ta sẽ tìm hiểu cách thức làm thế nào để trích xuất dữ liệu từ file Excel ra định dạng HTML hoàn chỉnh:

khởi tạo nút chức năng

Dưới menu Developer, các bạn nhấn Design Mode và chọn nút Insert, sau đó đặt vào vị trí bất kỳ nào đó trên văn bản. Hãy đảm bảo rằng trên file Excel đó đã có sẵn dữ liệu, nhấn vào nút đó và chọn View Code. Nhập đoạn mã dưới đây vào:

Sub Button1_Click()
 Dim objIE As Object
 Dim HTML As String
 '----------The HTML CODE GOES FROM HERE AND DOWN----------
 HTML = "<HTML><TITLE>HTML Report Page</TITLE>" & _
 "<BODY><FONT COLOR = BLUE><FONT SIZE = 5>" & _
 "<B>The Following Are Results From Your Daily Calculation</B>" & _
 "</FONT SIZE><P>" & _
 "Daily Production: " & Sheet1.Cells(1, 1) & "<p>" & _
 "Daily Scrap: " & Sheet1.Cells(1, 2) & "<p></BODY></HTML>"
 '----------The HTML CODE GOES HERE AND ABOVE---------
 On Error GoTo error_handler
 Set objIE = CreateObject("InternetExplorer.Application")
 With objIE
 .Navigate "about:blank"
 Do While .Busy: DoEvents: Loop
 Do While .ReadyState <> 4: DoEvents: Loop
 .Visible = True
 .Document.Write HTML
 End With
 Set objIE = Nothing
 Exit Sub
error_handler:
 MsgBox ("Unexpected Error, I'm quitting.")
 objIE.Quit
 Set objIE = Nothing
End Sub

Đoạn mã trên sẽ có chức năng hiển thị văn bản HTML mà chúng ta khởi tạo trong phần String. Và như vậy, các bạn có thể nhúng bất kỳ dữ liệu nào từ bản tính Excel vào chuỗi dữ liệu HTML. Dưới đây là kết quả của trang báo cáo:

kết quả hiển thị

Khi phần kết quả được hiển thị qua dạng HTML đã hoạt động, bước tiếp theo cần hoàn tất là tạo cơ chế hoạt động cho đoạn mã VBA sao cho giống với 1 trình duyệt để đọc mã HTML từ nhiều website khác, xác định dữ liệu và hiển thị trở lại thành trang HTML cho người dùng:

Sub Button1_Click()
 Dim objIE As Object
 Dim HTML As String
 On Error GoTo error_handler
 Set objIE = CreateObject("InternetExplorer.Application")
 With objIE
 .Navigate "http://www.google.com"
 Do While .Busy: DoEvents: Loop
 Do While .ReadyState <> 4: DoEvents: Loop
 .Visible = True
 HTML = objIE.Document.Body.innerHTML
 .Document.Write "<html><title>My Own Google Results!</title><body><h1>This is an Edited Version of the Google Page!</h1>" & HTML & "</body></html>"
 End With
 Set objIE = Nothing
Exit Sub
error_handler:
 MsgBox ("Unexpected Error, I'm quitting.")
 objIE.Quit
 Set objIE = Nothing
End Sub

Những gì chúng ta đã thực hiện ở đây là sử dụng Internet Explorer để đọc mã HTML từ Google dưới dạng text qua hàm tương ứng trong VBA. Nếu thay HTML output ở phần khai báo biến trên đầu bằng hàm chuyển đổi HTML to VBA HTML thì kết quả sẽ trông giống như sau:

kết quả

Trên đây là ví dụ cơ bản về những gì VBA có thể làm được khi xử lý dữ liệu HTML, nếu thay thế với một vài chức năng tương ứng khác, chúng ta có thể thực hiện được hàm tìm kiếm thông tin trong một dòng nhất định nào đó, địa chỉ email, số điện thoại, mở đường dẫn bằng tab mới... Chúc các bạn thành công!

Thứ Ba, 10/01/2012 07:14
51 👨 5.056
0 Bình luận
Sắp xếp theo
    ❖ Tổng hợp