2014-12-08 3 views
0

У меня есть разделы в текстовом документе, который я хочу удалить на основе пользовательских входов в пользовательском интерфейсе пользователя.vba macro for word: delete sub section

Для например: я хочу, чтобы удалить подраздел 3.1.1 в разделе 3

я использовал следующий код, но он удаляет весь раздел, но я хочу, чтобы удалить только определенный подраздел:

ActiveDocument.Sections(x).Range.Delete 

Здесь я не могу дать x = 3.1.1, он принимает только целочисленное значение типа 3 и удаляет весь раздел.

ответ

0

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

Title___[continuous section break] 
Stuff 
Section 1___[continuous section break] 
Stuff 
Section 1.1___[continuous section break] 
Stuff 

Вы можете перебрать разделов и проверить первый абзац каждого:

For each objSect in ActiveDocument.sections 
    if trim(replace(objSect.Range.Paragraphs.First.range.Text, chr(13), "")) like "* 1.1" then objSect.range.delete 
Next objSect 

Конечно, это означает, что если вы хотите для удаления раздела 1 вам необходимо удалить его вместе с любыми подразделами по одному за раз.

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