最近写论文需要修改把doi修改成可跳转的格式,但是很可恶的是zotero好像没有可以一键勾选的功能(如果有请踢踢我),这一点还是败给EndNote了。。。不过本着死磕到底的原则,本人终于找到了可实现的方法,分享如下。
在“视图”选项卡找到“宏”,并点击“查看宏”,界面如下,点击“创建”
进入下面这个界面,把名字修改成AddHyperlinksToDOIs
宏代码的内容可以参考下面的:
Sub AddHyperlinksToDOIs()
Dim doc As Document
Dim rng As Range
Dim doi As String
Dim lastChar As String
Set doc = ActiveDocument
Set rng = doc.Range
With rng.Find
.ClearFormatting
.Text = "https://doi.org/*^13" ' 匹配 DOI 后面跟着标点或空格
.MatchWildcards = True
.Wrap = wdFindStop
.Forward = True
Do While .Execute
doi = rng.Text
doi = Left(doi, Len(doi) - 2)
rng.Hyperlinks.Add Anchor:=rng, Address:=doi
' 移动到下一个匹配项
rng.Collapse wdCollapseEnd
rng.MoveStart wdCharacter, 1
Loop
End With
End Sub
但是使用的时候一定要知道为什么这样写,本人之前就是随便copy了一个大佬的链接,结果一直不成功。需要注意的是下面这几句:
1、超链接文本内容
.Text = "https://doi.org/*^13" ' 匹配 DOI 后面跟着标点或空格
这句是为了查找给哪句添加超链接。"^13"在word的通用符里表示回车符(可以Ctrl+H查找一下 ,可以发现“https://doi.org/*^13”可以选中所有的doi链接)我的doi格式是这种:
如果是其他格式的话直接自己修改下宏代码中“.Text”的内容即可。
2、跳转的网页地址
doi = Left(doi, Len(doi) - 2)
rng.Hyperlinks.Add Anchor:=rng, Address:=doi
"rng.Hyperlinks.Add"是给doi表示的字符串添加超链接,运行后可以看到原文中的doi变蓝了;“Address:=doi”的含义将超链接到的网页地址赋为doi变量,但是问题来了!!
此时doi其实是“https://doi.org/10.1016/j.rcim.2024.102818 .”,也就是回车符前的所有字符,而带着末尾的句号会使网页地址无效,所以我需要去掉倒数后两个字符,及句号和空格,所以我加了一句“doi = Left(doi, Len(doi) - 2)”,这里大家根据自己的情况确定去掉几位。
其他的不用改,修改好就可以保存宏
然后再回到这个界面,运行我们新定义的宏
至此可以正常跳转啦!!可以试试,也比较简单,就是要明白其中的原理,因地制宜~