我有以下使用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不再提供使用此类方法的支持非常感谢您的帮助
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
也许您需要更改一些内容以使其适应您的需求,但是它对我来说非常有效。我希望这会有所帮助。