Vba excel нумерация страниц

Создание верхнего и нижнего колонтитулов из кода VBA Excel: присвоение текста и его выравнивание, назначение шрифта, его размера, цвета и начертания.

Создание колонтитулов

Верхний и нижний колонтитулы в Excel состоят из трех частей: левой, центральной и правой. Следующий код VBA заполняет все части верхнего и нижнего колонтитулов их наименованиями:

Sub Test1()

    With ActiveSheet.PageSetup

        .LeftHeader = «Левая часть верхнего»

        .CenterHeader = «Центральная часть верхнего»

        .RightHeader = «Правая часть верхнего»

        .LeftFooter = «Левая часть нижнего»

        .CenterFooter = «Центральная часть нижнего»

        .RightFooter = «Правая часть нижнего»

    End With

End Sub

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

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

Sub Test2()

    With ActiveSheet.PageSetup

        .LeftHeader = «»

        .CenterHeader = «»

        .RightHeader = «Текст для правой части верхнего колонтитула с выравниванием по правому краю»

    End With

End Sub

Удаление колонтитулов

Чтобы удалить колонтитулы из печатной формы, необходимо присвоить всем частям верхнего и нижнего колонтитула пустые строки:

Sub Test3()

    With ActiveSheet.PageSetup

        .LeftHeader = «»

        .CenterHeader = «»

        .RightHeader = «»

        .LeftFooter = «»

        .CenterFooter = «»

        .RightFooter = «»

    End With

End Sub

Коды форматирования

Специальные коды VBA Excel для форматирования верхнего и нижнего колонтитулов:

Код Описание
&L Выравнивает текст по левому краю
&C Выравнивает текст по центру
&R Выравнивает текст по правому краю
&E Включает или отключает двойное подчеркивание
&X Включает или отключает надстрочные символы
&Y Включает или отключает подстрочные символы
&B Включает или отключает полужирное начертание
&I Включает или отключает курсивное начертание
&U Включает или отключает одинарное подчеркивание
&S Включает или отключает зачеркнутое начертание
&»fontname» Указывает наименование шрифта
&nn Двузначное число, задающее размер шрифта
&color Цвет шрифта, задающийся шестнадцатеричным значением
&D Вставка текущей даты
&T Вставка текущего времени
&F Вставка имени файла (книги) Excel
&A Вставка имени рабочего листа
&P Вставка номера страницы
&P+number Вставка номера страницы плюс указанное число
&P-number Вставка номера страницы минус указанное число
&& Вставка одного амперсанда
&N Общее количество страниц на рабочем листе
&Z Вставка пути к файлу
&G Вставка изображения

Примеры форматирования

Примеры форматирования колонтитулов в VBA Excel с помощью специальных кодов.

Пример 1

Пример использования надстрочных и подстрочных символов:

Sub Primer1()

    With ActiveSheet.PageSetup

        .LeftHeader = «Левая часть « & «&X» & «верхнего» & «&X» & » колонтитула»

        .LeftFooter = «Левая часть « & «&Y» & «нижнего» & «&Y» & » колонтитула»

    End With

End Sub

В результате получаем: «Левая часть верхнего колонтитула» и «Левая часть нижнего колонтитула».

Пример 2

В этом примере задаем шрифт «Times New Roman» с размером 12 и двойным подчеркиванием для строки, вставляемой в левую часть верхнего колонтитула:

Sub Primer2_1()

    ActiveSheet.PageSetup.LeftHeader = «&»«Times New Roman»«&12&E» & «Шрифт Times New Roman, размер 12, двойное подчеркивание»

End Sub

‘или то же самое в более наглядном виде с использованием переменных

Sub Primer2_2()

Dim fnt As String, txt As String

fnt = «»«Times New Roman»«»

txt = «Шрифт Times New Roman, размер 12, двойное подчеркивание»

    ActiveSheet.PageSetup.LeftHeader = «&» & fnt & «&12&E» & txt

End Sub

Пример 3

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

Sub Primer3()

    ActiveSheet.PageSetup.CenterHeader = «&B&I» & «&D  &T  &A»

End Sub

Пример 4

Вставка изображения в левую часть верхнего колонтитула:

Sub Primer4()

    With ActiveSheet.PageSetup

        .LeftHeaderPicture.Filename = «C:UsersEvgeniyDownloadsБезымянный1.png»

        .LeftHeader = «&G»

    End With

End Sub

Если изображение не большое, оно появится в колонтитуле, а большая картинка станет фоновым изображением печатных страниц.


0 / 0 / 0

Регистрация: 30.05.2010

Сообщений: 13

1

10.06.2010, 09:18. Показов 22416. Ответов 6


Студворк — интернет-сервис помощи студентам

при переходе в режим предпросмотра и после выхода из него можно (так же при задании областей) можно видеть, что в фоновом изображении Excel отображает номера страниц.

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



0



petr-sev

496 / 130 / 19

Регистрация: 30.03.2010

Сообщений: 224

10.06.2010, 14:54

2

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

Visual Basic
1
2
3
4
5
For I = 1 To ActiveSheet.HPageBreaks.Count
    If ActiveCell.Row < ActiveSheet.HPageBreaks(I).Location.Row - 1 Then Exit For
    
Next
MsgBox "Текущая строка на " & CStr(I) & "-й странице"



2



0 / 0 / 0

Регистрация: 30.05.2010

Сообщений: 13

10.06.2010, 17:54

 [ТС]

3

очень интересная идея, огромное спасибо



0



EducatedFool

0 / 0 / 0

Регистрация: 28.09.2009

Сообщений: 88

11.06.2010, 01:10

4

Воспользовался поиском — нашел такие варианты:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Public Sub PageNumner()
    Dim VPB As Excel.VPageBreak
    Dim HPB As Excel.HPageBreak
    Dim intVPBC As Integer
    Dim intHPPC As Integer
    Dim lngPage As Long
    
    lngPage = 1
    
    If Activesheet.PageSetup.Order = xlDownThenOver Then
        intHPPC = Activesheet.HPageBreaks.Count + 1
        intVPBC = 1
    Else
        intVPBC = Activesheet.VPageBreaks.Count + 1
        intHPPC = 1
    End If
 
    For Each VPB In Activesheet.VPageBreaks
        If VPB.Location.Column > ActiveCell.Column Then
            Exit For
        End If
        
        lngPage = lngPage + intHPPC
    Next VPB
    
    For Each HPB In Activesheet.HPageBreaks
        If HPB.Location.Row > ActiveCell.Row Then
            Exit For
        End If
            
        lngPage = lngPage + intVPBC
    Next HPB
    
    MsgBox "Номер страницы активной ячейки = " & lngPage
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Function PageNumber(cel As Range, Optional bEntireWorkbookNumbering As Boolean = False, _
    Optional vUpdatePageNumbering As Variant, Optional bAcrossThenDown As Boolean = False) As Long
Dim ws As Worksheet
Dim rgBreaks As Range
Dim hBreak As HPageBreak
Dim vBreak As VPageBreak
Dim i As Long, j As Long, k As Long, n As Long
Set ws = cel.Parent
For Each hBreak In ws.HPageBreaks
    If hBreak.Location.Row > cel.Row Then Exit For
    i = i + 1
Next
For Each vBreak In ws.VPageBreaks
    If vBreak.Location.Column > cel.Column Then Exit For
    j = j + 1
Next
If bAcrossThenDown Then 'Print pages across, then down
    PageNumber = i * ws.HPageBreaks.Count + j + 1
Else    'Print pages down, then across
    PageNumber = j * ws.VPageBreaks.Count + i + 1
End If
If bEntireWorkbookNumbering Then
    n = ws.Index
    If n > 1 Then
        n = n - 1
        For k = 1 To n
            Select Case Sheets(k).Type
            Case xlChart
                PageNumber = PageNumber + 1
            Case xlWorksheet
                i = Worksheets(k).HPageBreaks.Count
                j = Worksheets(k).VPageBreaks.Count
                PageNumber = PageNumber + (i + 1) * (j + 1)
            End Select
        Next
    End If
End If
End Function
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function PageNumber(cel As Range) As Long
    Dim ws As Worksheet, rgBreaks As Range, hBreak As HPageBreak
    Dim vBreak As VPageBreak, i As Long, j As Long, k As Long, n As Long
    Set ws = cel.Parent
    For Each hBreak In ws.HPageBreaks
        If hBreak.Location.Row > cel.Row Then Exit For
        i = i + 1
    Next
    For Each vBreak In ws.VPageBreaks
        If vBreak.Location.Column > cel.Column Then Exit For
        j = j + 1
    Next
    PageNumber = j * ws.VPageBreaks.Count + i + 1
End Function



0



ironegg

1904 / 781 / 31

Регистрация: 11.02.2010

Сообщений: 1,567

11.06.2010, 03:12

5

вопрос, конечно, решенный, но раз наваял, то выложу

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Sub a()
If ActiveWindow.Selection.Cells.Count > 1 Then MsgBox "âûäåëèòå îäíó ÿ÷;åéêó!": Exit Sub
For Each hpb In ActiveSheet.HPageBreaks
    If Not (ActiveCell.Row < hpb.Location.Row) Then
        RowPage = RowPage + 1
    End If
Next hpb
For Each vpb In ActiveSheet.VPageBreaks
    If Not (ActiveCell.Column < vpb.Location.Column) Then
        ColumnPage = ColumnPage + 1
    End If
Next vpb
If ActiveSheet.PageSetup.Order = xlDownThenOver Then
    ActivePage = ColumnPage * (ActiveSheet.HPageBreaks.Count + 1) + RowPage + 1
Else
    ActivePage = RowPage * (ActiveSheet.VPageBreaks.Count + 1) + ColumnPage + 1
End If
MsgBox ActivePage
End Sub



1



0 / 0 / 0

Регистрация: 30.05.2010

Сообщений: 13

11.06.2010, 08:09

 [ТС]

6

благодарствую.

*пошёл разбираться*



0



1 / 1 / 0

Регистрация: 17.11.2010

Сообщений: 40

17.11.2010, 14:20

7

Доброго времени суток

Хотел спросить совета. Итак есть табличка (некая форма док-та). Ее нужно в 4-х экземплярах на печать выдавать (данные в экземлярах разные, но форма одна). Так вот вопрос — как можно определить границу печатного листа при копировании-вставки этой формы?

ActiveSheet.HPageBreaks.Count пока я не вылезу за диапазон 1-го листа, значение = 0. Соответственно и границу (последнюю строку листа) неполучается вычислить…

Можно конечно сделать по простому — сначала копировать, потом определять границы и добивать до нужного пустыми строками, но м.б. есть более красивый выход?



0



Как вставить номер страницы в ячейку / верхний / нижний колонтитул в Excel?

При печати файла Excel вам может потребоваться вставить номера страниц в страницы, чтобы напечатанный файл был аккуратным и читабельным. В этой статье я расскажу о некоторых быстрых приемах, как вставить номера страниц в ячейку, верхний или нижний колонтитул.

Вставить номер страницы в верхний / нижний колонтитул на одном листе

Вставить номер страницы в верхний / нижний колонтитул на нескольких листах

Вставить номер страницы в ячейку с кодом VBA

Удалить сразу все номера страниц в Excel


стрелка синий правый пузырь Вставить номер страницы в верхний / нижний колонтитул на одном листе

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

1. Перейдите к листу, номера страниц которого вы хотите вставить в верхний или нижний колонтитул.

2. Затем нажмите Вставить > Верхний и нижний колонтитулы, и ваш рабочий лист будет в Макет страницы просмотреть, см. снимок экрана:

документ вставить номера страниц 1

3. Щелкните верхний или нижний колонтитул, куда вы хотите вставить номер страницы, а затем Дизайн вкладка с Инструменты для верхних и нижних колонтитулов отображается на ленте, затем щелкните Дизайн > Номер страницы, см. снимок экрана:

документ вставить номера страниц 2

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

документ вставить номера страниц 3

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

Внимание: Если вы хотите, чтобы номера страниц отображались в формате 1 из 15, 2 из 15, вам просто нужно напрямую ввести это & [Страница] из & [Страниц] в поле верхнего или нижнего колонтитула, см. снимок экрана:

документ вставить номера страниц 4


стрелка синий правый пузырь Вставить номер страницы в верхний / нижний колонтитул на нескольких листах

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

1. Выберите все вкладки листа, затем перейдите к Макет страницы вкладку и щелкните Кнопка запуска диалогового окна значок в Параметры страницы группа, см. снимок экрана:

документ вставить номера страниц 5

2. В Параметры страницы диалоговое окно, щелкните Верхний / нижний колонтитул Вкладка, а затем нажмите кнопку Пользовательский заголовок or Пользовательские Подвал чтобы установить нужный верхний или нижний колонтитул, см. снимок экрана:

документ вставить номера страниц 6

3. И в заголовок or нижний колонтитул диалоговое окно, укажите место, куда вставляются номера страниц, щелкнув внутри Левая часть:, Центральная секция: или Правый раздел: поле, как вам нужно, а затем щелкните Вставить номер страницы значок и заполнитель & [Страница] появляется. Смотрите скриншот:

документ вставить номера страниц 7

Примечание: Введите это & [Страница] из & [Страниц] в поле верхнего или нижнего колонтитула, если вы хотите, чтобы номера страниц отображались как 1 из 45, 2 из 45…

4. Затем нажмите OK > OK Чтобы закрыть диалоговые окна, при печати этой книги в предварительном просмотре печати вы можете видеть, что все номера страниц вставлены в верхний или нижний колонтитул в последовательном порядке.


стрелка синий правый пузырь Вставить номер страницы в ячейку с кодом VBA

Вам легко вставить номера страниц в верхний или нижний колонтитул, но, если вам нужно вставить номера страниц в ячейку листа, у вас нет прямого способа сделать это. Следующий код VBA может помочь вам решить эту проблему.

1. Щелкните ячейку, в которой вы хотите отобразить номер страницы этой ячейки.

2. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

3. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: вставить номер текущей страницы в ячейку:

Sub pagenumber()
'updateby Extendoffice 20160506
    Dim xVPC As Integer
    Dim xHPC As Integer
    Dim xVPB As VPageBreak
    Dim xHPB As HPageBreak
    Dim xNumPage As Integer
    xHPC = 1
    xVPC = 1
    If ActiveSheet.PageSetup.Order = xlDownThenOver Then
        xHPC = ActiveSheet.HPageBreaks.Count + 1
    Else
        xVPC = ActiveSheet.VPageBreaks.Count + 1
    End If
    xNumPage = 1
    For Each xVPB In ActiveSheet.VPageBreaks
        If xVPB.Location.Column > ActiveCell.Column Then Exit For
        xNumPage = xNumPage + xHPC
    Next
    For Each xHPB In ActiveSheet.HPageBreaks
        If xHPB.Location.Row > ActiveCell.Row Then Exit For
        xNumPage = xNumPage + xVPC
    Next
    ActiveCell = "Page " & xNumPage & " of " & Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
End Sub

4, Затем нажмите F5 ключ для запуска этого кода, и номер страницы этой ячейки отображается в выбранной ячейке, см. снимок экрана:

документ вставить номера страниц 8


стрелка синий правый пузырь Удалить сразу все номера страниц в Excel

Чтобы удалить все номера страниц, вы можете выполнить следующие действия:

1. Выберите все вкладки листа и перейдите к Макет страницы вкладку на ленте, затем щелкните Кнопка запуска диалогового окна значок в Параметры страницы группа, см. снимок экрана:

документ вставить номера страниц 9

2. В Параметры страницы диалоговое окно, нажмите Верхний / нижний колонтитул вкладку, а затем выберите (Нет) из заголовок or нижний колонтитул выпадающий список, см. снимок экрана:

документ вставить номера страниц 10

3. Затем нажмите OK Кнопка, все номера страниц удаляются из книги сразу.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

 

Андрей_26

Пользователь

Сообщений: 647
Регистрация: 30.01.2018

Добрый день!
Есть книга excel c несколькими листами. На листах различное количество страниц, которое будет постоянно меняться. В книге есть макрос, который сохраняет выбранные листы в один файл формата   .pdf. При сохранении в конце каждой страницы (кроме титульной) должны быть колонтитулы:
— внизу по центру: с указанием номера текущей страницы листа
— внизу справа: с указанием сквозной нумерации
Таким образом хотелось бы видеть:
Страница протокола 1              Страница отчета 2
Страница протокола 2              Страница отчета 3
Страница протокола 1              Страница отчета 4
Страница протокола 2              Страница отчета 5
Страница протокола 3              Страница отчета 6
Страница протокола 4              Страница отчета 7  и т.д.
У меня же получается сделать либо сквозную нумерацию, либо постраничную. Как их объединить в одном колонтитуле, кто что подскажет ?

Попробуйте запустить макрос и сохранить файл (сохранится в той же папке) . Откройте файл pdf и посмотрите на колонтитулы со второго листа и далее. И что хотелось бы в сообщении #1

Прикрепленные файлы

  • Пример.xlsm (41.29 КБ)

Изменено: Андрей_2616.01.2020 19:20:46

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

Доброе время суток.
Скорее всего создать для страниц с протоколами раздельные нижние колонтитулы для чётных и нечётных страниц в для чётных вписасть «Страница протокола 1», для нечётных «Страница протокола 2». Или я чего-то не понял.

 

Андрей_26

Пользователь

Сообщений: 647
Регистрация: 30.01.2018

Номера страниц формируются автоматически. В файле примере: Лист «Титул» — занимает 1 страницу, Лист «Протокол-1» — занимает 2 страницы, Лист «Протокол-4» — занимает 11 страниц). Итого имеет 14 страниц.
Для того чтобы подсчитывалось кол-во страниц на каждом листе в колонтитуле указываем: «Страница протокола &[Страница]»,
Для сквозной нумерации всех страниц в колонтитуле указываем «Страница отчета  &С&[Страница]».
Но дело в том, что если на каждом листе в настройках выбрать:
1) Параметры страницы — страница — номер первой страницы — Авто     тогда результат будет таким (сквозная нумерация всего)
Страница протокола 2              Страница отчета 2
Страница протокола 3              Страница отчета 3
Страница протокола 4              Страница отчета 4
……………………………………………………………………….
Страница протокола 14            Страница отчета 14

2) Параметры страницы — страница — номер первой страницы — 1          тогда результат будет таким  (постраничная нумерация каждого листа excel)
Страница протокола 1              Страница отчета 1
Страница протокола 2              Страница отчета 2
Страница протокола 1              Страница отчета 1
Страница протокола 2              Страница отчета 2
Страница протокола 3              Страница отчета 3
……………………………………………………………………….
Страница протокола 11            Страница отчета 11

А мне нужно сделать так:
Страница протокола 1              Страница отчета 2
Страница протокола 2              Страница отчета 3
Страница протокола 1              Страница отчета 4
Страница протокола 2              Страница отчета 5
Страница протокола 3              Страница отчета 6
……………………………………………………………………….
Страница протокола 11            Страница отчета 14

Возможно ли это в принципе стандартными средствами Excel ?

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

Андрей, в вашем конкретном случае, когда есть только два значения Страница протокола 1 и Страница протокола 2 — можно решить настройкой отдельных колонтитулов для чётных и нечётных страниц.

Прикрепленные файлы

  • Path.zip (185.34 КБ)

 

Андрей_26

Пользователь

Сообщений: 647
Регистрация: 30.01.2018

Андрей VG

я понял принцип который вы предложили. Но к сожалению если посмотреть файл pdf с шестой страницы то получается:
Страница протокола 1              Страница отчета 6
Страница протокола 2              Страница отчета 7
Страница протокола 1              Страница отчета 8
Страница протокола 2              Страница отчета 9
А должно быть:
Страница протокола 3             Страница отчета 6
Страница протокола 4             Страница отчета 7
Страница протокола 5             Страница отчета 8
Страница протокола 6             Страница отчета 9

Еще раз попробую объяснить. Смотрите, есть сквозная нумерация внизу справа — она работает правильно. Всего листов в создаваемом отчете — 14. В книге есть листы такие как «Протокол-1» на данном листе 2 печатные страницы, т.е. нумерация по середине должна идти Страница протокола 1,  Страница протокола 2. Следующий лист книги «Протокол-4» в нем 11 листов, нумерация по середине должна идти Страница протокола 1, Страница протокола 2……Страница протокола 11.

Изменено: Андрей_2616.01.2020 19:03:12

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#6

16.01.2020 19:49:36

Цитата
Андрей_26 написал:
А должно быть:Страница протокола 3             Страница отчета 6
Страница протокола 4             Страница отчета 7

А вот этого в стартовом сообщении было ничего. :)
Теоретически, переразбив по другому на листы, можно что-то вроде такого применить.

Прикрепленные файлы

  • Path.zip (219.24 КБ)

 

Андрей_26

Пользователь

Сообщений: 647
Регистрация: 30.01.2018

#7

16.01.2020 20:55:12

Цитата
Андрей VG написал:
А вот этого в стартовом сообщении не было ничего.

Да, я исправил, что бы было более понятно сразу тем кто читает в первый раз.
А предложенный Вами вариант я рассматривал, только на примере «Страница отчета  &С&[Страница]+1 » (добавления листов к сквозной нумерации), но это крайняя мера, т.к. это не удобно вот почему: планируется что в книге будет порядка 10 листов  (Протокол -1, Протокол-2 и т.д.) Каждый протокол может занимать от 1 до 300 страниц и по мимо этого планируется сделать выбор: какие протокола добавлять в отчет, а какие нет. Если прибегать к данному методу то нужно будет писать макрос по добавлению на каждый лист колонтитула с указанием какое кол-во листов  вычитать/добавлять — а этого ой как ни хочется ))  Например представьте такой набор в книге:
Титульный лист — 1 страница
Протокол 1         — 3 страницы
Протокол 2         — 10 страниц
Протокол 3         — 17 страниц
Протокол 4         — 59 страниц
Протокол 5         — 38 страниц
Пользователь выбрал для сохранения: Титульный лист, Протокол 2, Протокол 4 и Протокол 5.
А в следующий раз выберет: Титульный лист, Протокол 1, Протокол 3, Протокол 5.                 Я просто запутаюсь в вычислении нужного кол-ва листов.
Поэтому мне ни понятно почему в excel по отдельности использовать сквозную нумерацию, либо постраничную можно, а вместе ни чего не получается ?

Изменено: Андрей_2616.01.2020 21:02:55

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#8

16.01.2020 22:17:47

Цитата
Андрей_26 написал:
либо постраничную можно

Скорее всего так, настраивая колонтитул для каждой страницы и сохраняя либо каждую в отдельный pdf, а потом слияние в один, либо использовать что-нибудь типа Pdf Creator, что позволяют «печатать» в один и тот же pdf-файл, а потом сохранять.

#excel #vba

#превосходить #vba

Вопрос:

Я могу пронумеровать страницы просто отлично, используя .Объект Pagesetup. Я могу использовать .DifferentFirstPageHeaderFooter, чтобы пропустить нумерацию первой страницы, но у меня также есть индекс, который я не хочу нумеровать, как мне начать нумерацию на 3-й странице?

 Dim ws As Worksheet Application.ScreenUpdating = False For Each ws In Worksheets  ws.PageSetup.DifferentFirstPageHeaderFooter = True  ws.PageSetup.RightFooter = "Page " amp; "amp;P" amp; " of "   "amp;N"   Next ws Set ws = Nothing Application.ScreenUpdating = True  

Комментарии:

1. ws.PageSetup.FirstPageNumber = 3

2. @cybernetic.nomad ws.Набор страниц. FirstPageNumber = 3 просто устанавливает 2-ю страницу на «страницу 3 из x» вместо»страница 2 из x».

3. Я также заметил, что как только нумерация страниц задана в VBA, она устанавливается для всей книги. Другими словами, он отображается в пользовательском интерфейсе после однократного запуска в VBA, поэтому изменение VBA может быть переопределено настройками в пользовательском интерфейсе.

Like this post? Please share to your friends:
  • Vba excel номер строки в диапазоне
  • Vba excel номер строки активной ячейки
  • Vba excel номер страницы
  • Vba excel номер столбца активной ячейки
  • Vba excel номер последней ячейки