msxml / xmlhttp lỗi

Liên hệ QC

federera6

Thành viên mới
Tham gia
21/7/11
Bài viết
15
Được thích
1
Mình có một đoạn code như bên dưới:
Đây là code theo một trang dạy VBA excel và mình làm y hệt như video họ dạy theo đường link :
Mình bị mắc vấn đề là hướng dẫn họ chạy code này bình thường còn mình bị lỗi chỗ XMLPage.send
Mong mọi người giúp đỡ:


Sub BrowseToExchangeRatesWithQueryStringAndXML()

Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim HTMLAs As MSHTML.IHTMLElementCollection

XMLPage.Open "GET", "http://x-rates.com/table/?from=GBP&amount=3", False

XMLPage.send

HTMLDoc.body.innerHTML = XMLPage.responseText

Set HTMLAs = HTMLDoc.getElementsByTagName("table")
Debug.Print HTMLAs.Length
' ProcessHTMLPage HTMLDoc

End Sub
 
Không có file thì lại "đoán" thôi.
Cái này bạn đọc kĩ thông báo lỗi, trong này đang dùng nhiều thư viện mà chưa tham chiếu đến, như "MSXML2.XMLHTTP60" <--> "Microsoft XML v6.0", ...
Muốn dùng phải add trong Tool > References
hoặc thay vì
PHP:
Dim XMLPage As New MSXML2.XMLHTTP60
thì nên
PHP:
Set XMLPage = CreateObject("MSXML2.XMLHTTP60")
Tìm hiểu thêm Early-bindingLate-binding nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Không có file thì lại "đoán" thôi.
Cái này bạn đọc kĩ thông báo lỗi, trong này đang dùng nhiều thư viện mà chưa tham chiếu đến, như "MSXML2.XMLHTTP60" <--> "Microsoft XML v6.0", ...
Muốn dùng phải add trong Tool > References
hoặc thay vì
PHP:
Dim XMLPage As New MSXML2.XMLHTTP60
thì nên
PHP:
Set XMLPage = CreateObject("MSXML2.XMLHTTP60")
Tìm hiểu thêm Early-bindingLate-binding nhé.
1620025049616.png
Mình đã add reference như hình trên rồi nhưng vẫn không được bác ạ (@$%@
Thay đổi phương thức nhận object cũng không được.
File này không có gì vì mình chỉ muốn chạy đoạn marco ngắn đó thôi. Mục đích lấy data bằng XML Http thay vì internet explorer.
Mình đã thay thử bằng một trang web khác thì code trên chạy hoàn toàn bình thường, nên mình đang suy đoán là do trang web "http://x-rates.com/table/?from=GBP&amount=3" không dùng attribute .Send được.
Bài đã được tự động gộp:

1620025341321.png
Code lỗi tại properties .Send
 
Upvote 0
Đổi sang cái này thử đi :
PHP:
MSXML2.ServerXMLHTTP.6.0
hoặc
PHP:
WinHttp.WinHttpRequest.5.1
 
Upvote 0
Uổi mấy anh này khác nhau ở đâu mà khi đổi thì lại được vậy bạn
Thấy mấy cụ làm so sánh XMLHttp thì nhanh hơn WinHttp nhưng WinHttp thì ổn định hơn.
Sâu và xa hơn thì do "direct" vs "download" và Proxy gì đó --> vụ này thì mù tịt không có kiến thức để hiểu, kg dám lạm bàn. :yeah:
 
Upvote 0

federera6

sửa trong url http: thành https: là được rồi

Vì XMLHttp không giữ lại trạng thái của nó nên nó không thể tự động chuyển http sang https
ServerXMLHttp và WinHttp thì có thể

ServerXMLHttp = XMLHttp + WinHttp
ServerXMLHttp và WinHttp hoạt động giữ lại trạng thái hoạt động của nó, cũng như có thể cài đặt các tùy chọn đa dạng.
với XMLHttp thì không, nó chỉ phù hợp với mục đích Get, Post đơn giản, nhanh gọn.

MSXML2 ra đời sau nên nhỉnh hơn WinHttp. Trước hết là tốc độ.
 
Upvote 0

federera6

sửa trong url http: thành https: là được rồi

Vì XMLHttp không giữ lại trạng thái của nó nên nó không thể tự động chuyển http sang https
ServerXMLHttp và WinHttp thì có thể

ServerXMLHttp = XMLHttp + WinHttp
ServerXMLHttp và WinHttp hoạt động giữ lại trạng thái hoạt động của nó, cũng như có thể cài đặt các tùy chọn đa dạng.
với XMLHttp thì không, nó chỉ phù hợp với mục đích Get, Post đơn giản, nhanh gọn.

MSXML2 ra đời sau nên nhỉnh hơn WinHttp. Trước hết là tốc độ.
Đúng là như vậy thật.
Cám ơn bác nhiều. Bác lại còn trả lời thêm kiến thức cho mình.
Chúc tất cả mọi người luôn gặp nhiều điều may mắn trong cuộc sống !
 
Upvote 0
Thấy mấy cụ làm so sánh XMLHttp thì nhanh hơn WinHttp nhưng WinHttp thì ổn định hơn.
Sâu và xa hơn thì do "direct" vs "download" và Proxy gì đó --> vụ này thì mù tịt không có kiến thức để hiểu, kg dám lạm bàn. :yeah:
còn điều gì nữa không bạn, proxy chắc là liên quan tơi trực tiếp và gián tiếp á.
Bài đã được tự động gộp:

federera6

sửa trong url http: thành https: là được rồi

Vì XMLHttp không giữ lại trạng thái của nó nên nó không thể tự động chuyển http sang https
ServerXMLHttp và WinHttp thì có thể

ServerXMLHttp = XMLHttp + WinHttp
ServerXMLHttp và WinHttp hoạt động giữ lại trạng thái hoạt động của nó, cũng như có thể cài đặt các tùy chọn đa dạng.
với XMLHttp thì không, nó chỉ phù hợp với mục đích Get, Post đơn giản, nhanh gọn.

MSXML2 ra đời sau nên nhỉnh hơn WinHttp. Trước hết là tốc độ.
XMLHttp->WinHttp->MSXML2->ServerXMLHttp, thế còn anh IE và chị "cáo lửa" thì nằm ở đoạn nào bạn.
 
Upvote 0
XMLHttp->WinHttp->MSXML2->ServerXMLHttp, thế còn anh IE và chị "cáo lửa" thì nằm ở đoạn nào bạn.
IE và FireFox là trình duyệt, là giao diện người dùng.
sao so sánh với XMLHttp->WinHttp->MSXML2->ServerXMLHttp được bạn.
IE và FireFox hay Chrome, hay một trình duyệt bất kì nó sử dụng đối tượng XMLHttp->WinHttp->MSXML2->ServerXMLHttp để giao tiếp giữa máy chủ và máy khách.

Các trình duyệt hiện tại đã có đối tượng mới để thay thế tốt cho XMLHttp là Fetch, đơn giản hiệu quả, bất đồng bộ đơn giản, tương tự XMLHttp trên window.
 
Upvote 0
còn điều gì nữa không bạn, proxy chắc là liên quan tơi trực tiếp và gián tiếp á.
Bài đã được tự động gộp:


XMLHttp->WinHttp->MSXML2->ServerXMLHttp, thế còn anh IE và chị "cáo lửa" thì nằm ở đoạn nào bạn.
Theo ý hiểu của mình thì XMLHttp->WinHttp->MSXML2->ServerXMLHttp là các giao thức dùng để giao tiếp giữa giữa máy tính mình và host lưu web.
Còn lại IE hay Firefox ... là cái "biên dịch" và hiển thị đồ họa từ cái trả về từ Website.
Mình đang lấy dữ liệu nhận về, lấy 1 phần hay lấy toàn bộ và xào thành cái gì thì do mình.
 
Upvote 0
Web KT
Back
Top Bottom