У меня довольно большой текстовый документ ~250 страниц. Ссылки/цитаты Word не используются. Ссылки, сделанные в документе, представляют собой простой текст:
Рекомендации Ассоциации по предупреждению самоубийств (англ. International Association for Suicide Prevention (IASP)) [18, 36, 202]. Согласно данным, специалисты по предупреждению самоубийств должны были начать использовать специальные методы вмешательства, чтобы повысить эффективность специализированных методов лечения, а затем обратиться к специалистам по предупреждению самоубийств, чтобы помочь пациентам [19, 176, 177].
Список литературы вносится вручную в конце документа.
- Аббас МАФ, Абу Заид ЛЗ, Хусейн М. Тревога и депрессия среди медперсонала в медицинском центре короля Фахда, Королевство Саудовская Аравия. AIMS Medical Science 2015; 2(4): 303–309.
- Ахмед-Литтл Й. Последствия сменной работы для молодых врачей. BMJ 2007; 334:777–778.
- Ахола К., Хонконен Т., Пиркола С., Исомеца Э., Калимо Р., Нюкюри Э. и др. Алкогольная зависимость в связи с выгоранием среди работающего населения Финляндии // Авторы. Сборник журналов. Общество по изучению наркомании 2006;11:1438 – 1443.
- Айзен И. Природа и эксплуатационные установки. Ежегодный обзор психологии 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