Excel 中利用 WebService 函数实现多语言翻译的实战指南
概述
Excel 的 WebService 函数可以将网络上的 XML 或 JSON 数据直接导入工作表。结合免费的翻译 API(如百度翻译或 Google Apps Script),我们可以轻松实现单元格内容的批量翻译。本文将手把手教你构建翻译公式,无需编写复杂代码。
准备工作
- 申请 API 密钥:以百度翻译为例,前往 百度翻译开放平台 注册并申请通用翻译 API 的 APP ID 和密钥。
- 了解 API 请求格式:百度翻译 GET 请求示例:
https://api.fanyi.baidu.com/api/trans/vip/translate?q=要翻译的文字&from=auto&to=zh&appid=你的APPID&salt=随机数&sign=签名。 - 签名生成:用 VBA 或纯函数计算 MD5 签名,但 Excel 函数无法直接生成 MD5。推荐使用 VBA 自定义函数或直接使用无需签名的 API(如 Google Apps Script 部署的翻译接口)。
方法一:使用无需签名的 Google Apps Script 翻译
Google Apps Script 可部署为 Web 应用,返回 JSON 格式翻译结果。步骤如下:
- 创建 Google 脚本:
LanguageApp.translate(text, 'en', 'zh')并返回 JSON。 - 部署为 Web 应用,获取 URL。
- Excel 公式:
=WebService("https://your-script-url?text="&ENCODEURL(A1)) - 注意:Google 脚本免费版有配额限制。
方法二:利用 VBA 调用百度翻译 API
由于签名需要 MD5,VBA 可调用外部的 MD5 函数。以下为 VBA 自定义函数示例:
Function BaiduTranslate(txt As String, fromLang As String, toLang As String) As String
Dim appid As String, key As String, salt As String, sign As String
appid = "your_appid"
key = "your_secret_key"
salt = Format(Now, "yyyymmddhhmmss")
sign = MD5(appid & txt & salt & key)
Dim url As String
url = "https://api.fanyi.baidu.com/api/trans/vip/translate?q=" & txt & "&from=" & fromLang & "&to=" & toLang & "&appid=" & appid & "&salt=" & salt & "&sign=" & sign
' 创建 HTTP 请求并解析 JSON 响应
Dim http As Object, response As String
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
response = http.responseText
' 解析 JSON(需引用 ScriptControl)
Dim json As Object, result As String
Set json = CreateObject("ScriptControl")
json.Language = "JScript"
json.Eval "var obj = " & response
result = json.Eval("obj.trans_result[0].dst")
BaiduTranslate = result
End Function方法三:纯函数公式实现(有局限)
利用 WEBSERVICE 和 FILTERXML 处理 XML 响应,但大部分翻译 API 返回 JSON,Excel 原生无法解析 JSON。若使用返回 XML 的 API(如 Microsoft 翻译文本 API 的旧版),公式如下:
=WEBSERVICE("https://api.microsofttranslator.com/v2/http.svc/Translate?appId=Bearer "&token&"&text="&ENCODEURL(A1)&"&from=en&to=zh")但获取 token 需要额外步骤。
常见问题
- #VALUE! 错误:通常因为请求 URL 无效或网络问题。检查 API 限额、URL 编码(使用
ENCODEURL函数)。 - JSON 解析困难:建议使用 VBA 或 Power Query 处理 JSON。
- 速度慢:频繁调用 API 可能导致限速,可考虑批量处理后再查询。
总结
通过 Excel 的 WebService 函数结合翻译 API,可以高效实现工作表中的翻译需求。对于简单场景,使用 Google Apps Script 部署的接口最方便;对于正式环境,推荐使用 VBA 自定义函数调用百度翻译等稳定 API。