【发布时间】:2015-06-19 01:36:50
【问题描述】:
一段时间以来,我一直在使用 excel 中的公共函数进行基本翻译。在过去的一周里,我开始收到“#VALUE!”对于结果,我已将其缩小到代码的 MSXML2.XMLHTTP 部分。这是函数:
Public Function Translate(ByVal strText As String, _
Optional ByVal eFrom As eLanguage = auto_detect, _
Optional ByVal eTo As eLanguage = english, _
Optional ByVal blnPhonetic As Boolean = False) As String
Dim strUrl
Dim strTransText As String
Dim strResult As String
Dim varSplitText As Variant
Dim lngItem As Long
Dim delimitChar As String
delimitChar = Chr(34) & "," 'Chr(34) is the character for "
If strText = "" Then
Translate = ""
Exit Function
End If
strText = URLEncode(strText)
strUrl = "http://translate.google.com/translate_a/t?client=s&text={S}&hl=en&sl={F}&tl={T}&multires=1&pc=0&rom=1&sc=1"
strUrl = Replace$(strUrl, "{S}", strText)
strUrl = Replace$(strUrl, "{F}", Split(strSHORTCODES, ",")(eFrom))
strUrl = Replace$(strUrl, "{T}", Split(strSHORTCODES, ",")(eTo))
With CreateObject("MSXML2.XMLHTTP")
Call .Open("get", strUrl, False)
Call .Send
strResult = .responseText
End With
varSplitText = Split(Split(strResult, "]],")(0), "[")
If Not blnPhonetic Then
For lngItem = 3 To UBound(varSplitText)
strTransText = strTransText & Split(varSplitText(lngItem), delimitChar)(0)
Next
Else
For lngItem = 3 To UBound(varSplitText)
strTransText = strTransText & Split(varSplitText(lngItem), ",")(2)
Next
End If
strResult = Replace(strTransText, """", "")
Translate = strResult
End Function
在发送 strURL 之后出现问题:
With CreateObject("MSXML2.XMLHTTP")
Call .Open("get", strUrl, False)
Call .Send
strResult = .responseText
End With
我已验证 strURL 已正确创建,并且已将其输入浏览器并获得了积极的结果。我发现的唯一问题是,在第一次尝试进入浏览器时,我被带到了一个验证码页面以验证我的存在。当我调用翻译函数时,这会产生一个问题。有没有办法解决这个问题?
在函数执行期间使用创建的 strURL 示例: http://translate.google.com/translate_a/t?client=s&text=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF&hl=en&sl=&tl=en&multires=1&pc=0&rom=1&sc=1 如果您在浏览器中输入此内容,您可能会收到验证码响应。这个网址只是日文hello的翻译。
【问题讨论】:
标签: excel google-translate msxml vba