一行代码实现Microsoft.Office.EXCEL的自动翻译功能

某些时候我们需要使用翻译软件来进行翻译,比较常见的有灵格斯翻译、有道翻译、百度翻译等。可以选择在线翻译,也可以使用软件进行翻译。虽然现在都是机翻,毕竟人工翻译的价格在那,一个字就要最低0.11元(有道翻译价格)。而且平时翻译用的也不多,也只是需要知道个大概的意思就行了,所以机翻也其实有95%以上的准确率了,够用了。但如果遇到excel中存在大量需要翻译的单元格呢?不能总是一个一个复制过去,又再粘帖结果回来吧。这时候,一行简单的代码,就可以帮助我们实现相应的要求。

先看一个GIF动图的演示,词语也算比较简单的:

可以看到,非常之快,极速之间则完成了相应的翻译了。支持中英互译。

这一切,都源自于单元格中的函数代码为:

图1.excel中的自动翻译
=FILTERXML(WEBSERVICE("http://fanyi.youdao.com/translate?&i="&A1&"&doctype=xml&version"),"//translation")

其中调用了三个函数或者接口:

一、 FILTERXML函数

FILTERXML函数为使用指定的 XPath 从 XML 内容返回特定数据。

语法:FILTERXML(xml, xpath)

FILTERXML 函数语法具有下列参数。

config.xml    必需。 有效 XML 格式的字符串。

Xpath    必需。 标准 XPath 格式中的字符串。

在我们这里使用的函数中,config.xml 就是嵌套了WEBSERVICE函数的如下字段:WEBSERVICE(“http://fanyi.youdao.com/translate?&i=”&A1&”&doctype=xml&version”)

Xpath就是//translation

二、WEBSERVIC函数

WEBSERVIC函数为返回 Intranet 或 Internet 上的 Web 服务数据。大多数情况下是不安全的,会提出安全警告,所以要忽视或者容许运行。

语法:WEBSERVICE(url)

WEBSERVICE 函数语法具有下列参数。

Url    必需。 Web 服务的 URL。

备注

如果参数无法返回数据,则 WEBSERVICE 返回错误值 #VALUE!。

如果参数导致字符串无效或含有的字符超过允许的单元格限制(32767 个字符),则 WEBSERVICE 返回错误值 #VALUE!。

如果 url 字符串所含字符超过 GET 请求允许的 2048 个字符,则 WEBSERVICE 返回错误值 #VALUE!。

对于不支持的协议,例如 ftp :// 或 file://,WEBSERVICE 返回 #VALUE! 错误值。

三、有道翻译在线接口:

有道翻译并没有直接提供在线的接口,这个接口应该是以前留下的,或者并网友发现的。

http://fanyi.youdao.com/translate?&i=”&A1&”&doctype=xml&version

这段代码的含义是,使用有道翻译的接口,将A1单元格中的文字翻译后,并提供xml格式。正常情况下,网页上返回的结果是:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<response type="EN2ZH_CN" errorCode="0" elapsedTime="1">
<input>
<![CDATA[ administrator ]]>
</input>
<translation>
<![CDATA[ 管理员 ]]>
</translation>
</response>

图2.在线接口的URL反馈

那么通过Xpath //translation 的位置,可以定义到CDATA 管理员字段,则把该字段提取,返回特定值到数据到B1单元格中。

如果我们使用input来定义,那么返回的值就是输入值了。

这个函数代码的使用还有前提:

  • Excel的版本在2013以上
  • 连接了互联网
  • 有道翻译没有禁用这个接口

是不是比较实用的一个功能代码?