преобразовать жестко закодированный список библиографии Word

преобразовать жестко закодированный список библиографии Word

У меня довольно большой текстовый документ ~250 страниц. Ссылки/цитаты Word не используются. Ссылки, сделанные в документе, представляют собой простой текст:

Рекомендации Ассоциации по предупреждению самоубийств (англ. International Association for Suicide Prevention (IASP)) [18, 36, 202]. Согласно данным, специалисты по предупреждению самоубийств должны были начать использовать специальные методы вмешательства, чтобы повысить эффективность специализированных методов лечения, а затем обратиться к специалистам по предупреждению самоубийств, чтобы помочь пациентам [19, 176, 177].

Список литературы вносится вручную в конце документа.

  1. Аббас МАФ, Абу Заид ЛЗ, Хусейн М. Тревога и депрессия среди медперсонала в медицинском центре короля Фахда, Королевство Саудовская Аравия. AIMS Medical Science 2015; 2(4): 303–309.
  2. Ахмед-Литтл Й. Последствия сменной работы для молодых врачей. BMJ 2007; 334:777–778.
  3. Ахола К., Хонконен Т., Пиркола С., Исомеца Э., Калимо Р., Нюкюри Э. и др. Алкогольная зависимость в связи с выгоранием среди работающего населения Финляндии // Авторы. Сборник журналов. Общество по изучению наркомании 2006;11:1438 – 1443.
  4. Айзен И. Природа и эксплуатационные установки. Ежегодный обзор психологии 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

Связанный контент