Зачем нужна кнопка печати в Excel и когда она упрощает работу
Распечатка таблиц в Microsoft Excel — рутинная задача, которая отнимает время, если каждый раз приходится искать команду в меню. Создание кнопки «Печать» на листе или панели быстрого доступа экономит до 30 секунд на каждом документе. Это особенно актуально для бухгалтеров, логистов и менеджеров, которые ежедневно печатают десятки отчётов.
Кнопка печати полезна в трёх сценариях: 1) Когда документ используется несколькими сотрудниками с разным уровнем владения Excel. 2) Если нужно печатать только определённый диапазон или лист из многостраничной книги. 3) Для автоматизации печати с предварительными настройками (например, в альбомной ориентации или с колонтитулами).
Без кнопки пользователи часто забывают установить параметры, из-за чего распечатки получаются некорректными.
В этой статье разберём 5 способов добавить кнопку печати — от простых (для новичков) до продвинутых (с VBA-скриптами для автоматической настройки страницы). Все методы работают в Excel 2010–2021 и Microsoft 365, если не указано иное.
Способ 1: Добавление кнопки на панель быстрого доступа (без макросов)
Самый быстрый метод — разместить команду «Печать» на панели быстрого доступа. Это не требует знаний VBA и занимает менее минуты. Кнопка будет доступна в любом файле Excel.
Инструкция:
1. Откройте Excel и перейдите в Файл → Параметры → Панель быстрого доступа.
2. В выпадающем списке «Выбрать команды из» выберите Все команды.
3. Прокрутите список до команды Печать и предварительный просмотр (или Быстрая печать в англоязычных версиях).
4. Нажмите Добавить >> и ОК.
Теперь значок принтера появится рядом с лентой. При нажатии откроется окно печати с текущими настройками. Минус метода: кнопка не настраивается под конкретный документ (например, нельзя зафиксировать диапазон печати).
Проверьте версию Excel (метод работает с 2010 года)
Закройте все ненужные книги (настройки применяются глобально)
Убедитесь, что принтер подключён и настроен по умолчанию
Сохраните файл перед изменением параметров-->
⚠️ Внимание: В Excel Online панель быстрого доступа не поддерживает добавление команд печати. Используйте десктопную версию.
Способ 2: Кнопка печати на листе с помощью вставки фигур
Если нужно, чтобы кнопка была видна прямо на листе (например, в шаблоне отчёта), используйте стандартные фигуры Excel. Этот метод не требует макросов, но кнопка будет статичной — она просто откроет окно печати.
Пошаговая инструкция:
1. Перейдите на вкладку Вставка → Фигуры и выберите прямоугольник или овальную кнопку.
2. Нарисуйте фигуру на листе и введите текст (например, «Печать»).
3. Кликните по фигуре правой кнопкой → Гиперссылка.
4. В поле «Адрес» введите print: (с двоеточием) и нажмите ОК.
Теперь при нажатии на фигуру откроется окно печати. Чтобы кнопка выглядела профессионально:
- 🎨 Используйте корпоративные цвета (вкладка
Формат фигуры). - 📏 Зафиксируйте размер (например, 100×40 пикселей) для всех кнопок в книге.
- 🔒 Заблокируйте фигуру от изменений: правый клик →
Формат фигуры → Размер и свойства → Защита(отметьте «Заблокировано»).
Как сделать кнопку с эффектом наведения?
Чтобы кнопка меняла цвет при наведении курсора, используйте VBA:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Дважды кликните по листу в проекте и вставьте код:
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.