如何修改VBA代码实现基于SpanishDict.com的英-墨西哥西班牙语翻译
基于SpanishDict的Excel VBA翻译函数(英语转墨西哥西班牙语)
我是一名教师,在用Excel制作学生进度报告时,需要将面向家长的英语评语翻译成墨西哥西班牙语。之前使用的谷歌翻译VBA输出卡斯蒂利亚西班牙语,不符合需求,现修改为基于SpanishDict实现翻译:
原有谷歌翻译版代码
Function Translate$(sText$, FromLang$, ToLang$) Dim p1&, p2&, url$, resp$ Const DIV_RESULT$ = "<div class=""result-container"">" Const URL_TEMPLATE$ = "https://translate.google.com/m?hl=[from]&sl=[from]&tl=[to]&ie=UTF-8&prev=_m&q=" url = URL_TEMPLATE & WorksheetFunction.EncodeURL(sText) url = Replace(url, "[to]", ToLang) url = Replace(url, "[from]", FromLang) resp = WorksheetFunction.WebService(url) p1 = InStr(resp, DIV_RESULT) If p1 Then p1 = p1 + Len(DIV_RESULT) p2 = InStr(p1, resp, "</div>") Translate = Mid$(resp, p1, p2 - p1) End If End Function
修改后的SpanishDict版代码
Function TranslateMexican$(sText$, FromLang$, ToLang$) Dim p1&, p2&, url$, resp$ ' SpanishDict翻译请求地址 Const URL_TEMPLATE$ = "https://www.spanishdict.com/translate/" ' 适配页面结构的结果定位标记 Const RESULT_START$ = "<span class=""dictionaryLink--2wF7Y translation--3IsF6"">" Const RESULT_END$ = "</span>" ' 构造带编码文本的请求URL url = URL_TEMPLATE & WorksheetFunction.EncodeURL(sText) ' 获取页面响应内容 resp = WorksheetFunction.WebService(url) ' 定位并提取翻译结果 p1 = InStr(resp, RESULT_START) If p1 > 0 Then p1 = p1 + Len(RESULT_START) p2 = InStr(p1, resp, RESULT_END) If p2 > p1 Then TranslateMexican = Mid$(resp, p1, p2 - p1) End If End If End Function
使用说明
- 函数名改为
TranslateMexican以明确用途,也可保留原Translate名称直接替换原有函数 - 无需额外指定语言参数,SpanishDict默认优先返回贴合墨西哥使用习惯的西班牙语翻译
- Excel单元格中直接调用即可,例如输入
=TranslateMexican(A1,"en","es-mx")(后两个参数可省略,不影响结果)
内容的提问来源于stack exchange,提问作者Pat Zaur
相关产品推荐
相关产品推荐

