使用XMLHTTP代替Internet Explorer进行试用

问题描述 投票:2回答:1

我有以下使用Internet Explorer的工作代码。

Sub Translate()
Dim ie      As Object
Dim html    As Variant
Dim lngto   As String
Dim i       As Long

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = 0
lngto = "en"

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not IsEmpty(Cells(i, 1)) Then
        ie.navigate "https://translate.google.com/#ar/" & lngto & "/" & Range("A" & i).Value

        Do Until ie.readyState = 4: DoEvents: Loop

        Application.Wait (Now + TimeValue("00:00:02"))
        Range("B" & i).Value = ie.document.querySelector(".translation").innerText
    End If
Next i

ie.Quit
Set ie = Nothing

MsgBox "Done...", 64
End Sub

我如何使用XMLHTTP来更快地获得结果。或Google不再提供使用此类方法的支持非常感谢您的帮助

excel vba excel-vba
1个回答
0
投票
使用MSXML2.XMLHTTP

我在同一位置,决定切换到XMLHTTPRequest,这要快得多,并且不需要循环就可以了,直到接收到数据为止。这是我使用的功能:

Function sendXmlHttpRequest(URL As String, FormData As String, Boundary As String) As String Dim XMLHTTP As New MSXML2.XMLHTTP 'Send the form data To URL As POST request Dim bFormData() As Byte ReDim bFormData(Len(FormData) - 1) bFormData = StrConv(FormData, vbFromUnicode) XMLHTTP.Open "POST", URL, False XMLHTTP.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary + vbCrLf XMLHTTP.send bFormData 'MsgBox XMLHTTP.responseText 'if you need to show the response sendXmlHttpRequest = XMLHTTP.responseText End Function

也许您需要更改一些内容以使其适应您的需求,但是它对我来说非常有效。

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.