![转换硬编码的 Word 书目列表](https://linux22.com/image/1606855/%E8%BD%AC%E6%8D%A2%E7%A1%AC%E7%BC%96%E7%A0%81%E7%9A%84%20Word%20%E4%B9%A6%E7%9B%AE%E5%88%97%E8%A1%A8.png)
我有相当大的 word 文档,大约 250 页。未使用 Word 引用/引文。文档中的引用都是简单的文本:
Tarptautinės 自杀预防协会(英语:International Association for Suicide Prevention (IASP))建议 [18, 36, 202]。更重要的是,自杀预防专科医生在接受特定自杀预防专科医生的治疗时,会考虑他们的特殊情况 [19, 176, 177]。
参考书目列表在文档末尾手动输入。
- Abbas MAF、Abu Zaid LZ、Hussaein M. 沙特阿拉伯国王法赫德医疗城护理人员的焦虑和抑郁症状况。AIMS 医学科学 2015;2(4): 303–309。
- Ahmed-Little Y.轮班工作对初级医生的影响。BMJ 2007;334:777–778。
- Ahola K、Honkonen T、Pirkola S、Isometsa E、Kalimo R、Nykyri E 等。酒精依赖与芬兰劳动人口倦怠的关系//作者。期刊汇编。成瘾研究学会 2006;11:1438 – 1443。
- Ajzen I. 自然与操作态度。《心理学年鉴》2001;52:27-58。
...
250.
除了逐一输入之外,还有其他方法来创建适当的参考书目列表吗?
答案1
最后写了 VB 脚本
Sub ChangeText()
Dim cDoc As Word.Document
Dim cRng As Word.Range
Set cDoc = ActiveDocument
Set cRng = cDoc.Content
cRng.Find.ClearFormatting
'Dim dic As Dictionary
'Set dic = New Dictionary
Dim c As Object
Set c = CreateObject("Scripting.Dictionary")
c.Add "x1", "1"
c.Add "x2", "62"
c.Add "x3", "2"
With cRng.Find
.Forward = True
.Text = "["
.Wrap = wdFindStop
.Execute
Do While .Found
cRng.Collapse Word.WdCollapseDirection.wdCollapseEnd
cRng.MoveEndUntil Cset:="]", Count:=Word.wdForward
Dim TextStr As String
Dim Result() As String
TextStr = cRng.FormattedText.Text
Result() = Split(TextStr, ",")
For i = LBound(Result()) To UBound(Result())
Dim temp As String
temp = CStr(LTrim(Result(i)))
Result(i) = c(temp)
Next i
Debug.Print "before: " & cRng.FormattedText.Text
cRng.FormattedText.Text = Join(Result, ", ")
Debug.Print "after:" & cRng.FormattedText.Text
cRng.Collapse Word.WdCollapseDirection.wdCollapseEnd
.Execute
Loop
End With
End Sub