EXCEL如何自动生成英文单词的音标?

我之前做过一个,包括多个翻译结果,音标,例句——都是从网页返回的结果,你甚至可以点击发音音频文件从另一个网页获取,我有空就去找。

要使用VBA,需要添加引用:XML和HTML注意:今天的测试,代码无法运行。测试发现某网页返回的内容有变化,解析路径错误~ ~,音标内容好像没有了!!以下代码仅供参考。

右键单击工作表,查看代码并粘贴以下代码:

子樊沂(字符串形式的Wrd,范围形式的Target)

作者:cnbubble,03jb@163.com

1版——用有道获取翻译意思、音标、例句;从/获得MP3发音文件。发音码不抄。

Dim xlmDoc作为DOMDocument

Dim xlmNodes作为IXMLDOMNodeList

Dim S为字符串,I为IXMLDOMNode,J为整数,tagPos为整数

Dim oExec

Wrd =微调(Wrd)

如果Wrd = " "则退出Sub

OE xec = CreateObject(" wscript . shell ")。run(" ping dict.youdao.com-n 1 ",0,True)

如果oExec & lt& gt0然后目标。偏移量(0,1)。value = "可能没有联网,翻译功能不可用!":出口接头

申请。EnableEvents = False

Set xlmDoc = New DOMDocument

xlmDoc.async = False

如果xlmDoc。Load("/search?q = " & ampWrd & amp“& ampdoctype=xml”)那么

set xlm nodes = xlm doc . select nodes("//translation/content ")'翻译内容。

S = " "

对于xlmNodes中的每个I

S =标准普尔。一、文本与文本。vbCrLf

然后

目标。偏移量(0,1)。值=左(S,Len(S) - 2)

set xlm nodes = xlm doc . select nodes("//phonetic-symbol ")'注音符号

S = " "

对于xlmNodes中的每个I

S =标准普尔。"/? "& amp一、文本与文本。"?/& amp;vbCrLf

然后

目标。偏移量(0,2)。值=左(S,Len(S) - 2)

目标。Offset(0,2),font . color =-11489280。

set xlm nodes = xlm doc . select nodes("//Example-sentences/sentences-pair ")' Example

J = 3

对于xlmNodes中的每个I

S = i.childNodes(0)。文本& ampvbCrLf & amp;i.childNodes(2)。文本

tagPos = InStr(S," & ltb >;)

S = Replace(S," & ltb >;, "")

S = Replace(S," & lt/b & gt;, "")

有目标。偏移量(0,J)

。值= S

。Characters(tagPos,Len(Wrd)),Font.Bold = True。

。Characters(tagPos,Len(Wrd)),Font.Color = vbRed。

以…结尾

J = J + 1

然后

如果…就会结束

申请。EnableEvents = True

末端接头

私有子工作表_Change(ByVal目标作为范围)

如果目标。Column & gt1或目标。Row = 1或Target。细胞计数& gt1然后退出接头

打电话给樊沂(目标。价值,目标)

末端接头

在A栏输入要翻译的单词,后面自动显示所有的翻译结果、音标和三个例句,这是之前实现的。现在不跑了!!。

如果只实现音标,可以从网页中获取VBA,插入一个模块,粘贴以下代码:

公共函数getPhon(Wrd As String) As String

查找单词的音标

Dim htmlDoc为字符串,sPhon为字符串

Dim oMatch

用CreateObject(“微软。XMLHTTP”)

。打开“获取”,“/搜索?q = " & ampWrd,假

。派遣

htmlDoc =。响应文本

以…结尾

用CreateObject("VBScript。正则表达式”)

。全局=假

。Pattern = " & ltspan class = " " phonetic " " & gt(【^<;]+)& lt;/span >;

Set oMatch =。执行(htmlDoc)

如果奥马奇。Count & gt那么0

getPhon = oMatch(0)。子匹配项(0)

如果…就会结束

以…结尾

结束功能

在工作表中,就像使用自己的函数一样:

给出一个字符串在:

或单元格引用: