Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2014, 08:57   #1
Foo_fighter
Пользователь
 
Регистрация: 07.03.2014
Сообщений: 12
По умолчанию Цикл VBA для нижних колонтитулов с нумерацией

Здравствуйте.

Не могу понять как сделать цикл для разделов документа, чтобы выстроить нумерацию.

Вид документа следующий: начало документа состоит из нескольких разделов(величина разная), в которых нумерация отсутствует, затем идет раздел в котором в нижнем колонтитуле есть таблица, в таблице нумерация и мне надо в первом разделе(который с таблицей и нумерацией) задать начальное значение (пусть "3"), затем в последующих разделах (аналогично выстроенных с таблицей и нумерацией) продолжить нумерацию.


Dim S As Word.Section
Dim f As Word.HeaderFooter
' разделы документа
For Each S In ActiveDocument.Sections
' нижний колонтитул
Set f = S.Footers(wdHeaderFooterPrimary)
' наличие таблиц
If f.Range.Tables.count <= 0 Then
' наличие нумерации
ElseIf f.PageNumbers.count <= 0 Then
Else
' параметры нумерации
With f.PageNumbers
.RestartNumberingAtSection = True
.StartingNumber = 3
End With
' выход или как то по другому организовать можно? Дабы не изменить первую нумерацию первого раздела с таблицей...
Exit For
End If
Next S
' Тут организовать продолжение нумерации по остальным найденным разделам( .RestartNumberingAtSection = False) или задать второй цикл For each .... Next ?
End Sub

Схемка документа:
раздел (без таблицы и нумерации)
...
раздел (без таблицы и нумерации)
Раздел с таблицей и нумерацией (задать начальное значение "3")
Раздел с таблицей и нумерацией ("Продолжить нумерацию")
Foo_fighter вне форума Ответить с цитированием
Старый 17.04.2014, 09:35   #2
Foo_fighter
Пользователь
 
Регистрация: 07.03.2014
Сообщений: 12
По умолчанию

Делюсь двумя вариантами решения моей задачки.

Sub Start_number(ByVal desired_number As Long)
Dim s As Section, f As Boolean: f = True
For Each s In ActiveDocument.Sections
With s.Footers(1).PageNumbers
If .count > 0 Then 'Проверка наличия нумерации.
.RestartNumberingAtSection = f
If f Then .StartingNumber = desired_number: f = False
End If
End With
Next s
End Sub

Sub Start_number_PAGE_3()
' Этот макрос запускает верхний
' Чтобы изменить начальную нумерацию изменить число "3"
Start_number 3
End Sub



Sub НУмерацияС3ПродолжитьНумерацию()
Dim s As Word.Section
Dim f As Word.HeaderFooter
Dim B As Boolean
B = False ' признак продолжения
' разделы документа
For Each s In ActiveDocument.Sections
' нижний колонтитул
Set f = s.Footers(wdHeaderFooterPrimary)
' продолжаем нумерацию
If B Then
f.PageNumbers.RestartNumberingAtSec tion = False
' наличие таблиц
ElseIf f.Range.Tables.count <= 0 Then
' наличие нумерации
ElseIf f.PageNumbers.count <= 0 Then
Else
' первый раздел нумерации
B = True
' параметры нумерации
With f.PageNumbers
.RestartNumberingAtSection = True
.StartingNumber = 3
End With
End If
Next s
End Sub
Foo_fighter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл в UserForm (VBA) Limon153 Помощь студентам 0 24.05.2013 20:43
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
цикл vba deemka777 Microsoft Office Excel 5 10.09.2012 10:59
Печать верхних и нижних строк на каждом листе. Растяжка формул по объедененным ячейкам. vamesc Microsoft Office Excel 4 09.03.2011 13:18
VBA. Нужно прокрутить цикл для нескольких листов книги Julit Microsoft Office Excel 14 29.12.2010 17:19