Google翻译不翻译文本(日语到英语)。打开网站并使用以下代码输入文本时,该函数始终返回“”:
Function OutlookGetTransItem(IE As Object, URL As String, trans_text As String) As String
Dim t As Date
If trans_text = "" Then OutlookGetTransItem = trans_text: Exit Function
Const MAX_WAIT_SEC As Long = 5
With IE
.Visible = True
.navigate URL
While .Busy Or .ReadyState < 4: DoEvents: Wend
.Document.querySelector("#source").Value = trans_text
Dim translation As Object, translationText As String
t = Timer
Do
On Error Resume Next
Set translation = .Document.querySelector(".tlid-translation.translation")
translationText = translation.innerText
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While translationText = vbNullString
OutlookGetTransItem = translationText
End With
End Function
当我尝试手动单击网站上的翻译箭头/按钮时,IE出现此错误: SCRIPT5025:要解码的URI不是有效的编码 translate_m.js(207,484)
这是我导航到的URL:
https://translate.google.com/#view=home&op=translate&sl=ja&tl=en
以下是我设置为trans_text
的文本,该文本是使用其.body
属性从Outlook电子邮件中提取的:
关系各位
いつもお世话になっております。 “ 111117_NAM_L42L_TR2k2_3悪_第1部第2部.pdf(议事板书)”を送付いたします。よろしくお愿い致します。
论文:途中 下记13件のスがありフ ォ ロ ーを実施する
エ ン担,プ ロ セ ン
・残渣対応を実施する事(D レ ン ジ ア イ ド ル回転検讨,ア イ ド ル振动デ ー タ入手,制御不具合対応,全ROM定数チ ェ ッ ク,燃料PUMP不具合调查,冷房性能未达対応)
・ T / M IPのFKとFKk2との比较を提示する事
・ サ ー モ ス タ ッ トのメ ー カ ーを再确认すること
・始动エ ン ス ト チ ェ ッ ク リ ス トの再チ ェ ッ クを実施する事(エ ン ス ト余裕率,パ ー ジの判断,AF / M电源摄取特性)
始动ISC
・不悬残项目の対応を実施する事(车両振动,始动即R セ レ ク ト エ ン ス ト,A / F回転総チ ェ ッ ク,常温始动軽质确认,かぶり,セ レ ク ト ア イ フ ラ,PCV ハ ン チ ン グ确认,即始动确认,押し出され确认)
・ H1を最终仕様でまとめる事
・各相场チ ェ ッ ク デ ー タの古いL42Lのラ イ ンを削除する事
・ ブ レ ー キ エ ン ス ト回転低下时の车両振动への影响を确认する事
・低温始动时のTpを确认する事
・ ク ラ ン キ ン グ回転数の0℃の目标値の出所を确认する事
台上适合
・ H2全ROM定数チ ェ ッ クを実施する事
・不悬残项目の対応を実施する事(R / L サ ー ジ,暖机中ラ フ ア イ ド ル,ロ ジ ッ ク バ グ修正后の确认,ブ ロ ッ ク _ ヘ ッ ト変更后のノ ッ ク确认)
・ BCV确认のTH / Cつまりデ ー タの再确认を実施する事(ア ル ミ ボ ア化)
<\ Jp-nml-fs-a01 \ U00 \ PT共通(イフフー)\ A01_集约(フリー)\ 3悪格纳フ ォ ル ダ 2 \ 111117_NAM_L42L_TR2k2_3悪>
答案 0 :(得分:2)
稍微更改您的URL,然后让浏览器处理URL的编码。在这里,我正在从一个单元格中读取您的文本。网站进行翻译时,它会生成一个新URL,该URL的查询字符串参数为text=<your string to translate>
。因此,将text=
添加到您的起始网址中,并连接成短语进行翻译。
请记住,您需要在某个时候关闭IE实例。我不喜欢以这种方式将IE作为对象传递,并且可能希望将其保存在类Class_Initialize()
中生成IE对象的类中。然后,在子类中使用变量实例化该类。
我经常忘记我现在认为合适的导航方法是.navigate2
。
Option Explicit
Public Sub test()
Dim ie As InternetExplorer, trans_text As String
Const URL As String = "https://translate.google.com/#view=home&op=translate&sl=ja&tl=en&text="
Set ie = New InternetExplorer
trans_text = [A1].Value
Debug.Print OutlookGetTransItem(ie, URL, trans_text)
ie.Quit
End Sub
Public Function OutlookGetTransItem(ByVal ie As Object, ByVal URL As String, ByVal trans_text As String) As String
Dim t As Date
If trans_text = vbNullString Then OutlookGetTransItem = trans_text: Exit Function
Const MAX_WAIT_SEC As Long = 5
With ie
.Visible = True
.navigate2 URL & trans_text
While .Busy Or .readyState < 4: DoEvents: Wend
Dim translation As Object, translationText As String
t = Timer
Do
On Error Resume Next
Set translation = .document.querySelector(".tlid-translation.translation")
translationText = translation.innerText
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While translationText = vbNullString
OutlookGetTransItem = translationText
End With
End Function