Как искать замену в текстовых документах, когда верхний и нижний колонтитулы отличаются на первой странице и на нечетных / четных страницах

Я успешно выполнил поиск замены в заголовке и нижнем колонтитуле doc docx, используя: этот вопрос. Я использую Delphi для управления Word через OLE Automation.

Теперь проблема в том, что это работает только для первой страницы, если один устанавливает «другой заголовок для первой страницы», или не работает вообще, если один устанавливает «разные на чет / нечет».

Этот документ объясняет это немного подробнее.

ОБНОВИТЬ:

В упомянутом выше документе объясняется, что MS Word управляет верхним и нижним колонтитулами как первой / нечетной / четной страницей. Но также можно выбрать ни один вариант, и в этом случае все верхний и нижний колонтитулы будут одинаковыми.

В случае, если выполняется поиск и замена с использованием кода, который я привел выше, он работает только в том случае, если не выбраны дополнительные параметры, поэтому в случае, если один из них - поиск и замена в документе, где все верхние и нижние колонтитулы одинаковы.

Если случайно этот код используется против документа, в котором выбран «другой заголовок для первой страницы», поиск и замена будут выполняться только в верхнем и нижнем колонтитулах первой страницы.

Хотя это вообще не сработает, если выбран только один вариант - «разные верхний и нижний колонтитулы на нечетных и четных страницах» (а не «разные на первой странице»).

Итак, я спрашивал, решал ли уже эту проблему во всех случаях. Я имею в виду, что было бы полезно найти этот ответ также для других пользователей, которым необходимо выполнять поиск и замену в верхнем и нижнем колонтитулах в документах MS Word, используя автоматизацию Delphi и OLE.


person LaBracca    schedule 30.11.2011    source источник
comment
Мистеру. закроем этот вопрос: ЭТО ВОПРОС, прочтите еще раз заголовок, и это важное задание также для всех людей, которые думают, что, реализовав алгоритм замены поиска с использованием упомянутой выше ссылки, они в безопасности. Вы не в безопасности, потому что если вы пытаетесь получить доступ к верхним и нижним колонтитулам, которые отличаются от первой или нечетных / четных страниц, у вас ничего не получится.   -  person LaBracca    schedule 01.12.2011
comment
Я думаю, что те, кто проголосовал против, думают, что у кого-нибудь есть код для этого? не показывает реальный вопрос, прилагая достаточно усилий, чтобы найти решение самостоятельно.   -  person GolezTrol    schedule 01.12.2011
comment
Кроме того, документ, на который вы ссылаетесь, не имеет к этому никакого отношения. Речь идет о замене целых заголовков, копаясь непосредственно в XML документа.   -  person GolezTrol    schedule 01.12.2011


Ответы (1)


Ответ на остальные вопросы переходит к заголовку текущей страницы, как вы можете четко определить по названию. Если вы находитесь на первой странице раздела, это означает, что вы измените только этот другой заголовок. Есть и другие виды, к которым вы можете перейти, чтобы найти другие части документа:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdseekview(v=office.11).aspx

Также обратите внимание, что документ может содержать несколько разделов, каждый из которых может иметь отдельный заголовок. В этом случае вам следует перебрать их и повторить шаги для каждого заголовка.

Если в разделе только одна страница, может быть сложно перейти к заголовку по умолчанию, если у раздела есть другой заголовок для своей первой страницы. В этом случае вам может потребоваться снять флаг «другая первая страница», изменить заголовок и снова включить его.

person GolezTrol    schedule 01.12.2011
comment
В основном я принял ответ, чтобы остановить отрицательные голоса. Хорошо, я сниму выделение с ответа и попытаюсь выразить себя еще раз, обновив вопрос. - person LaBracca; 01.12.2011
comment
@WarrenP Вопрос не совсем ясен, но вопрос, на который он ссылается, дает дополнительный контекст. Это действительно вопрос программирования. Тот факт, что у него есть тег Delphi, предполагает OLE Automation. По крайней мере, мне. Я автоматизирую Word около 10 лет, начиная с Word 95, используя старый API Word, автоматизацию OLE и VBA. Так что, возможно, это помогло понять, в чем проблема. - person GolezTrol; 02.12.2011
comment
В документе, на который имеется ссылка, показано, как заменить целые заголовки. Это действительно показывает, что есть несколько заголовков, если у вас разные заголовки первой страницы и / или разные нечетные / четные заголовки, но сам пример кода не использует автоматизацию (или поиск и замену в этом отношении). Вместо этого он просто вставляет XML-структуру документа, чтобы заменить там заголовки. Файлы .docX на самом деле представляют собой zip-файлы с XML-содержимым. Это совершенно другой метод, и его нельзя использовать в файлах .doc. - person GolezTrol; 02.12.2011
comment
Я исправил вопрос, чтобы добавить немного точки заземления (мы используем Delphi и OLE Automation) - person Warren P; 02.12.2011