在Excel VBAmacros中使用Google Translate

人们….多年来,我已经在我的一个Excelmacros中使用了下面的函数来帮助我将照片字幕从英文写成法文。 这个AM开始抛出一个错误,指向下面代码中的.Send命令:

 Public Function getGoogleTranslation(strSource As String, strSourceLang As String, strDestLang As String) As String Dim strURL As String, x As String strURL = "http://translate.google.com/translate_a/t?client=t&text=" & _ Replace(strSource, " ", "%20") & _ "&hl=en&sl=" & strSourceLang & _ "&tl=" & strDestLang & "&multires=1&pc=0&rom=1&sc=1" With CreateObject("msxml2.xmlhttp") .Open "get", strURL, False .send x = .responseText End With getGoogleTranslation = Replace(Replace(Split(x, ",")(0), "[", ""), """", "") End Function 

当我将strURL的内容直接复制/粘贴到IE中时,我第一次得到了一个validation码和一个评论,他们正在检查“机器人”。 第二次直接工作。 他们必须设置一个cookie?

有没有办法解决? 或者另一种方法来获得在macros中翻译的简单短语?

谢谢…. RDK

好的,用Google翻译完成! VBA的使用已经不再免费,甚至和我一样小。 现在通过VBA使用Microsoft Translator。 刚刚在Microsoft Azure Marketplace上注册并获得免费的200万字符/月。

我已经使用这个系统已经有好几个月了,并且和谷歌翻译一样好。 不完美,但足够好…. RDK

以下是谷歌翻译模块的testing版的vba实现:(用于软件的快速翻译)…也许你需要手动检查文本以后的正确性。

 Private Function GoogleTranslate(ByVal Text4Translation, ByVal resLang, ByVal srcLang) As String Dim IEApp As Object Dim IEDoc As Object Dim IEUrl As String Dim IESrc As String Dim IEBeg As Long Dim IEEnd As Long ' Neues Browser Objekt erzeugen Set IEApp = CreateObject("InternetExplorer.Application") ' Browser versteckt ausführen (höhere Geschwindigkeit) 'IEApp.Visible = False ' URL Generieren Text4Translation = Replace(Text4Translation, " ", "%20") IEUrl = "https://translate.google.com/#" & srcLang & "/" & resLang & "/" & Text4Translation ' HTML-Datei aufrufen IEApp.navigate IEUrl Do Application.Wait Now + TimeSerial(0, 0, 1) Loop Until IEApp.busy = False Set IEDoc = IEApp.document ' Quelltext einlesen IESrc = IEDoc.body.innerHTML ' Bereich auslesen IEBeg = InStr(1, IESrc, "result_box") If IEBeg = 0 Then IESrc = " # Nothing found" Else IEEnd = InStr(IEBeg, IESrc, "</div") IESrc = Mid(IESrc, IEBeg + 40, IEEnd - IEBeg - 40) IESrc = Replace(IESrc, "<span class=" & Chr(34) & "hps" & Chr(34) & ">", "") IESrc = Replace(IESrc, "<span class=" & Chr(34) & "atn" & Chr(34) & ">", "") IESrc = Replace(IESrc, "<span class=" & Chr(34) & "hps atn" & Chr(34) & ">", "") IESrc = Replace(IESrc, "<span>", "") IESrc = Replace(IESrc, "</span>", "") If IESrc = "" Then IESrc = " # Instr-Error" End If Set IEApp = Nothing GoogleTranslate = IESrc End Function 

resLang =“de”,“en”,…(TargetLanguage)

srcLang =“de”,“en”,…(SourceLanguage)

(注意,它只是一个解决方法!)

请参考获取谷歌抄本的语音 (As string)(在TextBox下面,用英文翻译一个字时)