Кнопка «Печать» в Excel: как создать за 5 минут (с примерами кода)

Зачем нужна кнопка печати в Excel и когда она упрощает работу

Распечатка таблиц в Microsoft Excel — рутинная задача, которая отнимает время, если каждый раз приходится искать команду в меню. Создание кнопки «Печать» на листе или панели быстрого доступа экономит до 30 секунд на каждом документе. Это особенно актуально для бухгалтеров, логистов и менеджеров, которые ежедневно печатают десятки отчётов.

Кнопка печати полезна в трёх сценариях: 1) Когда документ используется несколькими сотрудниками с разным уровнем владения Excel. 2) Если нужно печатать только определённый диапазон или лист из многостраничной книги. 3) Для автоматизации печати с предварительными настройками (например, в альбомной ориентации или с колонтитулами).

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

В этой статье разберём 5 способов добавить кнопку печати — от простых (для новичков) до продвинутых (с VBA-скриптами для автоматической настройки страницы). Все методы работают в Excel 2010–2021 и Microsoft 365, если не указано иное.

📊 Как часто вы печатаете документы из Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Способ 1: Добавление кнопки на панель быстрого доступа (без макросов)

Самый быстрый метод — разместить команду «Печать» на панели быстрого доступа. Это не требует знаний VBA и занимает менее минуты. Кнопка будет доступна в любом файле Excel.

Инструкция: 1. Откройте Excel и перейдите в Файл → Параметры → Панель быстрого доступа. 2. В выпадающем списке «Выбрать команды из» выберите Все команды. 3. Прокрутите список до команды Печать и предварительный просмотр (или Быстрая печать в англоязычных версиях). 4. Нажмите Добавить >> и ОК.

Теперь значок принтера появится рядом с лентой. При нажатии откроется окно печати с текущими настройками. Минус метода: кнопка не настраивается под конкретный документ (например, нельзя зафиксировать диапазон печати).

Проверьте версию Excel (метод работает с 2010 года)

Закройте все ненужные книги (настройки применяются глобально)

Убедитесь, что принтер подключён и настроен по умолчанию

Сохраните файл перед изменением параметров-->

⚠️ Внимание: В Excel Online панель быстрого доступа не поддерживает добавление команд печати. Используйте десктопную версию.

Способ 2: Кнопка печати на листе с помощью вставки фигур

Если нужно, чтобы кнопка была видна прямо на листе (например, в шаблоне отчёта), используйте стандартные фигуры Excel. Этот метод не требует макросов, но кнопка будет статичной — она просто откроет окно печати.

Пошаговая инструкция: 1. Перейдите на вкладку Вставка → Фигуры и выберите прямоугольник или овальную кнопку. 2. Нарисуйте фигуру на листе и введите текст (например, «Печать»). 3. Кликните по фигуре правой кнопкой → Гиперссылка. 4. В поле «Адрес» введите print: (с двоеточием) и нажмите ОК.

Теперь при нажатии на фигуру откроется окно печати. Чтобы кнопка выглядела профессионально:

  • 🎨 Используйте корпоративные цвета (вкладка Формат фигуры).
  • 📏 Зафиксируйте размер (например, 100×40 пикселей) для всех кнопок в книге.
  • 🔒 Заблокируйте фигуру от изменений: правый клик → Формат фигуры → Размер и свойства → Защита (отметьте «Заблокировано»).

Как сделать кнопку с эффектом наведения?

Чтобы кнопка меняла цвет при наведении курсора, используйте VBA:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Дважды кликните по листу в проекте и вставьте код:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    

    If Not Intersect(Target, Range("A1")) Is Nothing Then

    ActiveSheet.Shapes("Button1").Fill.ForeColor.RGB = RGB(200, 200, 200)

    Else

    ActiveSheet.Shapes("Button1").Fill.ForeColor.RGB = RGB(0, 112, 192)

    End If

    End Sub

    Замените Button1 на имя вашей фигуры, а A1 — на ячейку рядом с кнопкой.

Способ 3: Кнопка с макросом для печати выделенного диапазона

Если нужно печатать только определённые ячейки (например, таблицу без служебных данных), создайте кнопку с VBA-скриптом. Этот метод требует включения макросов в файле.

Инструкция: 1. Нажмите Alt + F11, чтобы открыть редактор Visual Basic for Applications. 2. Вставьте новый модуль: Вставка → Модуль. 3. Скопируйте код:

Sub PrintSelectedRange()

Dim PrintArea As Range

On Error Resume Next

Set PrintArea = Application.InputBox( _

"Выделите диапазон для печати:", _

"Печать выделенного", _

Selection.Address, _

Type:=8)

On Error GoTo 0

If PrintArea Is Nothing Then Exit Sub

PrintArea.PrintOut Copies:=1, Preview:=True

End Sub

4. Вернитесь на лист, перейдите на вкладку Разработчик → Вставить → Кнопка (элемент управления формы). 5. Нарисуйте кнопку на листе и присвойте ей макрос PrintSelectedRange.

Теперь при нажатии на кнопку пользователь сможет выделить диапазон для печати. Чтобы зафиксировать диапазон (например, A1:D50), замените строку Selection.Address на "A1:D50".

Параметр макроса Описание Пример значения
Copies Количество копий 2
Preview Показать предварительный просмотр (True/False) False
Collate Разобрать по копиям (True/False) True
From, To Номера страниц для печати From:=1, To:=3
⚠️ Внимание: Файлы с макросами сохраняются в формате .xlsm. Если отправить такой файл коллеге, он может не открыться из-за настроек безопасности. Перед отправкой проверьте уровень доверия в Файл → Параметры → Центр управления безопасностью.

Способ 4: Кнопка с автоматическими настройками страницы

Для сложных документов (например, с колонтитулами или полями) создайте кнопку, которая автоматически настраивает параметры страницы перед печатью. Это избавит от ручной настройки каждый раз.

Пример кода для макроса (вставьте в модуль как в Способе 3):

Sub PrintWithSettings()

With ActiveSheet.PageSetup

.Orientation = xlLandscape 'Альбомная ориентация

.Zoom = 85 'Масштаб 85%

.LeftHeader = "&""Arial,Большой""&10 &BДокумент №123" 'Колонтитул

.CenterFooter = "&""Arial,Обычный""&8 &D" 'Дата внизу

.PrintArea = "A1:F100" 'Фиксированный диапазон

End With

ActiveSheet.PrintPreview 'Предпросмотр

End Sub

Свяжите этот макрос с кнопкой (см. Способ 3).

Дополнительные настройки, которые можно добавить в код:

  • 🖼️ .PrintGridlines = True — печать сетки.
  • 📄 .PaperSize = xlPaperA4 — формат бумаги.
  • 🔢 .FirstPageNumber = 1 — начальный номер страницы.
  • 🖨️ .PrintQuality = 600 — разрешение (dpi).

Способ 5: Кнопка печати с выбором принтера (продвинутый)

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

Код для макроса:

Sub PrintToSelectedPrinter()

Dim PrinterName As String

PrinterName = Application.Dialogs(xlDialogPrinterSetup).Show

If PrinterName <> "False" Then

ActiveSheet.PrintOut ActivePrinter:=PrinterName, Copies:=1

End If

End Sub

Этот макрос сначала открывает окно выбора принтера, а затем печатает на выбранном устройстве.

Чтобы зафиксировать принтер (например, для отдела), замените строку с xlDialogPrinterSetup на:

ActivePrinter = "\\SERVER\HP_Color_LaserJet" 'Укажите имя вашего принтера

ActiveSheet.PrintOut Copies:=1

Имя принтера можно найти в Файл → Печать → Имя принтера.

Частые ошибки и как их избежать

При создании кнопок печати пользователи сталкиваются с типичными проблемами. Вот как их решить:

1. Кнопка не работает после сохранения файла.

  • 🔹 Проверьте формат файла: макросы работают только в .xlsm.
  • 🔹 Включите макросы в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройка макросов (выберите «Включить все макросы»).

2. Печатается не тот диапазон.

  • 🔹 Убедитесь, что в коде макроса указан правильный адрес: .PrintArea = "A1:D50".
  • 🔹 Если диапазон динамический, используйте UsedRange или именованный диапазон.

3. Кнопка исчезает при фильтрации данных.

  • 🔹 Закрепите кнопку: кликните по ней правой кнопкой → Формат фигуры → Свойства → Не перемещать и не изменять размер.
  • 🔹 Разместите кнопку на отдельном листе (например, «Панель управления»).

⚠️ Внимание: В Excel для Mac некоторые параметры PageSetup (например, .CenterHeader) могут не поддерживаться. Перед использованием проверьте код на целевой платформе.

FAQ: Ответы на популярные вопросы

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

Да. Создайте макрос в модуле ThisWorkbook (а не на отдельном листе) и используйте цикл For Each для перебора листов. Пример кода:

Sub PrintAllSheets()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

ws.PrintOut

Next ws

End Sub

Свяжите этот макрос с кнопкой на любом листе.

Как сделать кнопку печати с предварительным просмотром?

Замените в макросе .PrintOut на .PrintPreview. Например:

ActiveSheet.PrintPreview

Чтобы после предпросмотра печать запускалась автоматически, добавьте:

Application.Wait Now + TimeValue("00:00:02") 'Задержка 2 секунды

ActiveSheet.PrintOut

Почему при печати через макрос пропадают настройки страницы?

Excel сбрасывает пользовательские настройки, если они не зафиксированы в коде. Всегда указывайте параметры явно, например:

With ActiveSheet.PageSetup

.LeftMargin = Application.InchesToPoints(0.5)

.RightMargin = Application.InchesToPoints(0.5)

.TopMargin = Application.InchesToPoints(0.75)

.BottomMargin = Application.InchesToPoints(0.75)

End With

Используйте Application.InchesToPoints для точного задания полей в дюймах.

Как сделать кнопку печати только видимых ячеек (после фильтра)?

Добавьте в макрос параметр PrintOut с аргументом PrintToFile:=False и используйте SpecialCells для выбора видимых ячеек:

Sub PrintVisibleCells()

Dim PrintRange As Range

On Error Resume Next

Set PrintRange = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)

On Error GoTo 0

If Not PrintRange Is Nothing Then PrintRange.PrintOut

End Sub

Можно ли экспортировать кнопку печати в PDF вместо принтера?

Да. Замените .PrintOut на .ExportAsFixedFormat:

ActiveSheet.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:="C:\Отчёты\документ.pdf", _

Quality:=xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=True

Укажите свой путь к папке в параметре Filename.