2013-05-30 2 views
0

Я надеюсь использовать макрос, чтобы заменить концевые сноски в текстовом документе. Вот мое место:VBA Macro для замены концевых сносок в Word

У меня есть два слова docs. Оба документа имеют одинаковое количество концевых сносок. Один документ заполнен правильным содержанием тела, но имеет место для концевых заметок. Другой документ имеет устаревший контент, но имеет правильные сноски для заполнения заполнителей в первом документе.

У меня есть макрос ниже, который может проходить через все концевые сноски в правильном файле, а затем открывает другой документ под названием «old.docx» ниже. Я просто не знаю, как заменить заметок в old.docx значением ftstr (см. Ниже).

Любая помощь будет замечательной!

Sub endnoteReplacer() 

Dim ft As Endnote 
Dim wrdApp As Object 
Dim wrdDoc As Object 

Dim r1 As Range, ftstr As String, mark 

    Set wrdApp = CreateObject("Word.Application") 
    wrdApp.Visible = False 
    Set wrdDoc = wrdApp.Documents.Open("C:\Desktop\old.docx") 

For Each ft In Word.ActiveDocument.Endnotes 

    ftstr = ft.Range.Text 

    wrdDoc.Endnotes(ft.Index).Range.Text = ftstr 

Next ft 

End Sub 
+0

Что вы подразумеваете под «заполнителями» ?? –

+0

Я имею в виду поддельные сноски. как и документ 1, будет иметь правильное содержание тела, но сноска будет означать, что «сноска 1 идет здесь». другой документ имеет правильное значение для концевой сноски 1 и im пытается ее заменить. – Brandon

ответ

1

Если я вас верно вам нужно это простое решение, чтобы добавить в вашем цикле:

For Each ft In Word.ActiveDocument.Endnotes 

    ftstr = ft.Range.Text 
    'change value of corresponding footnote in old.docx to value of ftstr 
    '!! new line !! 
    wrdDoc.Endnotes(ft.Index).Range.Text = ftstr 
Next ft 

Но я предполагал, что вам нужно изменить сноски (1) в сноски (1), 2 в 2 и т. Д.

+0

Спасибо! проверит его на мгновение. – Brandon

+0

Ваше предположение верно, что я хочу изменить endnote 1 на endnote 1, endnote 2 на endnote 2. Этот код, похоже, ничего не обновлял. Я обновил свой вопрос. Я буду продолжать работать с ним. – Brandon

+1

Да, действительно, он работает так, как вам нужно. Я думаю, вам нужно установить 'wrdApp.Visible = true', чтобы проверить, работает ли он. Я сделал это, и я уверен, что это работает. –

Смежные вопросы