San*_*osh 17
干得好.
Sub test()
Dim s As String
s = "hello world"
MsgBox transalte_using_vba(s)
End Sub
Run Code Online (Sandbox Code Playgroud)
Function transalte_using_vba(str) As String
' Tools Refrence Select Microsoft internet Control
Dim IE As Object, i As Long
Dim inputstring As String, outputstring As String, text_to_convert As String, result_data As String, CLEAN_DATA
Set IE = CreateObject("InternetExplorer.application")
' TO CHOOSE INPUT LANGUAGE
inputstring = "auto"
' TO CHOOSE OUTPUT LANGUAGE
outputstring = "es"
text_to_convert = str
'open website
IE.Visible = False
IE.navigate "http://translate.google.com/#" & inputstring & "/" & outputstring & "/" & text_to_convert
Do Until IE.ReadyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:5"))
Do Until IE.ReadyState = 4
DoEvents
Loop
CLEAN_DATA = Split(Application.WorksheetFunction.Substitute(IE.Document.getElementById("result_box").innerHTML, "</SPAN>", ""), "<")
For j = LBound(CLEAN_DATA) To UBound(CLEAN_DATA)
result_data = result_data & Right(CLEAN_DATA(j), Len(CLEAN_DATA(j)) - InStr(CLEAN_DATA(j), ">"))
Next
IE.Quit
transalte_using_vba = result_data
End Function
Run Code Online (Sandbox Code Playgroud)
Exc*_*ero 14
这是使用 Excel VBA 和 Google... 翻译文本的更简化的方法。
\n此 VBA 用户定义函数应输入到标准代码模块中。
\nFunction Translate$(sText$, FromLang$, ToLang$)\n Dim p1&, p2&, url$, resp$\n Const DIV_RESULT$ = "<div class=""result-container"">"\n Const URL_TEMPLATE$ = "https://translate.google.com/m?hl=[from]&sl=[from]&tl=[to]&ie=UTF-8&prev=_m&q="\n url = URL_TEMPLATE & WorksheetFunction.EncodeURL(sText)\n url = Replace(url, "[to]", ToLang)\n url = Replace(url, "[from]", FromLang)\n resp = WorksheetFunction.WebService(url)\n p1 = InStr(resp, DIV_RESULT)\n If p1 Then\n p1 = p1 + Len(DIV_RESULT)\n p2 = InStr(p1, resp, "</div>")\n Translate = Mid$(resp, p1, p2 - p1)\n End If\nEnd Function\nRun Code Online (Sandbox Code Playgroud)\n单元格中包含以下文本A1:Every moment is a fresh beginning.
在单元格中B1输入此公式:
=Translate(A1, "en", "fr") '<--translates text in A1 from English to French.\nRun Code Online (Sandbox Code Playgroud)\n单元格中的结果B1:Chaque instant est un nouveau d\xc3\xa9part.
当然这个Translate()函数也可以直接从VBA使用:
MsgBox Translate([A1], "en", "de") '<--displays: Jeder Moment ist ein Neuanfang.\nRun Code Online (Sandbox Code Playgroud)\n当然,您也可以手动使用 Excel 中内置的翻译功能,该功能可以在功能区的审阅选项卡上找到。但上面的 UDF 提供了一种快速且简化的方法\n以编程方式翻译文本。Excel 的翻译功能不通过 Excel 对象模型\n公开,因此像上面这样的函数\n可能非常有用。
\n和参数必须FromLang是ToLang下表中的代码:
CODE LANGUAGE\n en English\n fr French\n es Spanish\n it Italian\n de German\n af Afrikaans\n sq Albanian\n am Amharic\n ar Arabic\n hy Armenian\n az Azerbaijani\n eu Basque\n be Belarusian\n bn Bengali\n bs Bosnian\n bg Bulgarian\n ca Catalan\n ceb Cebuano\n ny Chichewa\n zh-CN Chinese (Simplified)\n zh-TW Chinese (Traditional)\n co Corsican\n hr Croatian\n cs Czech\n da Danish\n nl Dutch\n eo Esperanto\n et Estonian\n tl Filipino\n fi Finnish\n fy Frisian\n gl Galician\n ka Georgian\n el Greek\n gu Gujarati\n ht Haitian Creole\n ha Hausa\n haw Hawaiian\n iw Hebrew\n hi Hindi\n hmn Hmong\n hu Hungarian\n is Icelandic\n ig Igbo\n id Indonesian\n ga Irish\n ja Japanese\n jw Javanese\n kn Kannada\n kk Kazakh\n km Khmer\n rw Kinyarwanda\n ko Korean\n ku Kurdish (Kurmanji)\n ky Kyrgyz\n lo Lao\n la Latin\n lv Latvian\n lt Lithuanian\n lb Luxembourgish\n mk Macedonian\n mg Malagasy\n ms Malay\n ml Malayalam\n mt Maltese\n mi Maori\n mr Marathi\n mn Mongolian\n my Myanmar (Burmese)\n ne Nepali\n no Norwegian\n or Odia (Oriya)\n ps Pashto\n fa Persian\n pl Polish\n pt Portuguese\n pa Punjabi\n ro Romanian\n ru Russian\n sm Samoan\n gd Scots Gaelic\n sr Serbian\n st Sesotho\n sn Shona\n sd Sindhi\n si Sinhala\n sk Slovak\n sl Slovenian\n so Somali\n su Sundanese\n sw Swahili\n sv Swedish\n tg Tajik\n ta Tamil\n tt Tatar\n te Telugu\n th Thai\n tr Turkish\n tk Turkmen\n uk Ukrainian\n ur Urdu\n ug Uyghur\n uz Uzbek\n vi Vietnamese\n cy Welsh\n xh Xhosa\n yi Yiddish\n yo Yoruba\n zu Zulu\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
我就是这样做的.它的功能是可选的枚举对象,指向谷歌翻译使用的语言代码.为简单起见,我只包含了一些语言代码.此外,在此示例中,我选择了Microsoft Internet Controls引用,因此不使用创建对象,而是使用InternetExplorer对象.最后,为了摆脱不得不清理输出,我只使用.innerText而不是.innerHTML.请记住,谷歌翻译有大约3000左右的字符限制,而且,你必须设置IE =没有特别是如果你将多次使用这个,否则你将创建多个IE进程,最终它将无法正常工作了.
建立...
Option Explicit
Const langCode = ("auto,en,fr,es")
Public Enum LanguageCode
InputAuto = 0
InputEnglish = 1
InputFrench = 2
InputSpanish = 3
End Enum
Public Enum LanguageCode2
ReturnEnglish = 1
ReturnFrench = 2
ReturnSpanish = 3
End Enum
Run Code Online (Sandbox Code Playgroud)
测试...
Sub Test()
Dim msg As String
msg = "Hello World!"
MsgBox AutoTranslate(msg, InputEnglish, ReturnSpanish)
End Sub
Run Code Online (Sandbox Code Playgroud)
功能...
Public Function AutoTranslate(ByVal Text As String, Optional LanguageFrom As LanguageCode, Optional LanguageTo As LanguageCode2) As String
Dim langFrom As String, langTo As String, IE As InternetExplorer, URL As String, myArray
If IsMissing(LanguageFrom) Then
LanguageFrom = InputAuto
End If
If IsMissing(LanguageTo) Then
LanguageTo = ReturnEnglish
End If
myArray = Split(langCode, ",")
langFrom = myArray(LanguageFrom)
langTo = myArray(LanguageTo)
URL = "https://translate.google.com/#" & langFrom & "/" & langTo & "/" & Text
Set IE = New InternetExplorer
IE.Visible = False
IE.Navigate URL
Do Until IE.ReadyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:5"))
Do Until IE.ReadyState = 4
DoEvents
Loop
AutoTranslate = IE.Document.getElementByID("result_box").innerText
IE.Quit
Set IE = Nothing
End Function
Run Code Online (Sandbox Code Playgroud)