Мне нужно изменить более 700 библиографических ссылок, чтобы поместить их в сноски в документе из сотен страниц.Итак, я смотрю на VBA Word, но я почти новичок.Кажется, трудно найти документацию, особенно в отношении основы (объектная модель и т. Д.).Вот то, что я попробовал, и основная проблема, с которой я столкнулся, описана после.Эскиз используемого кода выглядит следующим образом:
Sub Replace_ref_1()
' Definition of all variables'
Set docRange = ActiveDocument.Range
' Definition of the Regex needed '
With regEx
...
End With
Options.Overtype = False ' Insert and not delete '
ActiveDocument.TrackRevisions = False ' Out of tracking changes mode '
' Regex matchs '
Set regFound = regEx.Execute(docRange)
' Loop over results, going by the last (highest index) '
For cpt = regFound.Count To 1 Step -1
refText = regFound(cpt - 1)
Selection.SetRange Start:=regFound.Item(cpt - 1).FirstIndex, End:=regFound.Item(cpt - 1).FirstIndex
Selection.Collapse Direction:=wdCollapseStart
Selection.Footnotes.Add Range:=Selection.Range, Text:=LTrim(refText)
Next cpt
End Sub
Идея состоит в том, чтобы использовать индекс каждого совпадения (который, если я правильно понимаю, номер начального символа совпадающей строки)вставить сноску в этом месте.Я сталкиваюсь со следующей проблемой: номера (отметки) сносок не вставлены в правильном месте.В общем, от нескольких до нескольких десятков персонажей раньше ожидаемых.Я думал, что это связано с тем, что добавление сносок подразумевает добавление символов в текст, и поэтому индекс не может быть в порядке.Вот почему я пытался обрабатывать от последнего к первому: ср."вниз" цикл.(Я проверял перед этой попыткой, чтобы совпадения находились в возрастающем индексе, записав их в файл.) Но это не лучше ...
Я также заметил, что для части текста, содержащей только 3 совпадения, все в порядке,Но как только текст становится слишком длинным, он не работает ни с первым, ни с последним совпадением.Я также заметил, что было бы лучше, если бы я удалил резюме (которое находится в начале), но даже с этим «трюком» для части документа с 133 совпадениями, только 57 первых в порядке, а все последующие сдвинуты(без какого-либо изменения формата между 57-м и 58-м соответствием ...).
Я думаю, что может быть проблема в моем понимании индекса или, более того, в части текста, включенной в индексы...
Я был бы рад, если бы кто-нибудь мог помочь мне в этом.
Спасибо.
РЕДАКТИРОВАТЬ : ссылки на 3 документа
1) input.doc (запись) -> http://dl.free.fr/jlfRDviRe
2) output.doc (как он должен выглядеть в конце) -> http://dl.free.fr/hNu2IAUMp
3) полученный.doc (что получить с помощью приведенного выше кода) -> http://dl.free.fr/b5OF5PKCL
Примечание: документы, полученные из документа, найденного в Интернете, и измененные ...
РЕДАКТИРОВАТЬ2 (19-03-07): новый документ, представляющий собой весь документ, который я использовал, с тем же форматом (анонимный текст), тем же стилем и т. Д. Обратите внимание, что 5-й первыйГаптеры (до стр. 31) показывают желаемый результат.Таким образом, макрос найдет только совпадения, начиная со страницы 32 ...
4) -> http://dl.free.fr/fGzSid05k