2

У меня есть таблица, структурированная следующим образом:

  • Сводный раздел в верхней части
  • Детальный раздел внизу
  • Сводный раздел суммирует подробный раздел, который фильтруется с помощью автофильтров.

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

Это, вероятно, не ясно. Так, например, если я распечатаю двухстраничное представление «Продукт А», то будут напечатаны страницы 1 из 2 и 2 из 2. Если я распечатаю одну страницу Продукт B, она покажет страницу 1 из 1. То, что я хочу, это напечатать оба и показать продукт А страницы 1 из 3, страницы 2 из 3 и продукт В страницы 3 из 3. Есть ли способ сделать это?

ОБНОВЛЕНИЕ: я надеялся получить ответ только для Excel, но никто не смог его дать. Я опубликую обходной путь, который я использую. Я оставлю это открытым немного дольше, прежде чем выбрать свой собственный ответ.

ОБНОВЛЕНИЕ 2: у Томаса правильный ответ - только Excel/VBA!

2 ответа2

3

Здесь есть два разных вопроса.

  1. Как поместить номера страниц в нижний колонтитул
  2. Как запустить применить несколько автофильтров печати после каждого фильтра.

Во-первых, вы можете сделать это в Page Setup:

  1. Зайдите в настройки страницы:
  2. Нажмите верхний / нижний колонтитул
  3. Нажмите кнопку "Пользовательский нижний колонтитул ..."
  4. В одном из разделов введите «Страница & [Page] of & [Pages]». Это код для отображения Page 1 of 2 , Page 2 of 2 и т.д. Внизу каждой страницы.

Чтобы выполнить вторую задачу, вам нужен макрос, что означает, что вам нужно сохранить файл как файл с поддержкой макросов (xlsm). Как только вы это сделаете, вам нужно показать вкладку Разработчик:

  1. Нажав на цветок в верхнем левом углу окна Excel, выберите "Параметры Excel"
  2. Убедитесь, что выбран раздел "Популярные"
  3. Убедитесь, что установлен флажок "Показать вкладку разработчика на ленте".

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

  1. Нажмите на вкладку разработчика
  2. Нажмите кнопку "Запись макроса".
  3. Когда запись будет включена, выполните процесс, который вы хотите автоматизировать. Т.е. применить фильтр, распечатать, применить другой фильтр, распечатать и т.д.

Ваш макрос будет написан на VBA (Visual Basic для приложений) и будет выглядеть примерно так:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=a*", _
    Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=b*", _
    Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False

прибавление

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

Public Sub GetTotalPageCount()
    Dim horizontalBreaks As Integer
    Dim verticalBreaks As Integer

    horizontalBreaks = ActiveSheet.HPageBreaks.Count + 1
    verticalBreaks = ActiveSheet.VPageBreaks.Count + 1

    GetTotalPageCount = horizontalBreaks * verticalBreaks
End Sub

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

  • Применить фильтр
  • Добавить количество страниц в глобальную переменную
  • Применить фильтр
  • Добавить количество страниц в глобальную переменную

...

  • (После последнего фильтра)ActiveSheet.PageSetup.CenterFooter = "Page &P of " & g_TotalPages
  • Применить фильтр
  • Распечатать
  • Применить фильтр
  • Распечатать

...

0

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

  1. Используйте VBA, чтобы изменить мой принтер на Adobe Acrobat Pro
  2. Используя VBA, прокрутите мои фильтры, чтобы напечатать каждое представление в отдельный файл PDF, используя фильтр в качестве имени файла.
  3. Импортируйте все файлы в один главный файл в Adobe Acrobat.
  4. Добавьте номера страниц в Adobe Acrobat.

Я действительно надеялся получить решение только для Excel/VBA, но я не уверен, что это возможно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .