Параметры печатной страницы в VBA Excel. Свойство PageSetup объекта Worksheet. Объект PageSetup и описание некоторых его свойств с примерами.
PageSetup — это объект, который содержит все атрибуты параметров страницы в виде свойств (диапазон печати, размеры полей, ориентация страницы и т.д.).
Объект PageSetup возвращается свойством PageSetup объекта Worksheet:
где Expression — это выражение (переменная), возвращающее объект Worksheet.
Свойства объекта PageSetup
Диапазон печати
Установить диапазон для печати из кода VBA Excel можно с помощью свойства PageSetup.PrintArea:
|
Worksheets(«Лист1»).PageSetup.PrintArea = «D7:L30» Лист1.PageSetup.PrintArea = Selection.Address |
Размеры полей
Свойства, отвечающие за размер полей печатной страницы:
| Свойство | Описание |
|---|---|
| LeftMargin | Возвращает или задает размер левого поля |
| TopMargin | Возвращает или задает размер верхнего поля |
| RightMargin | Возвращает или задает размер правого поля |
| BottomMargin | Возвращает или задает размер нижнего поля |
Свойства, отвечающие за размер полей, предназначены для чтения и записи, выражаются в точках (1 точка равна 1/72 дюйма или ≈1/28 см). Тип данных — Double.
Для того, чтобы вручную не высчитывать количество точек в дюймах или сантиметрах, существуют методы Application.InchesToPoints и Application.CentimetersToPoints, которые автоматически переводят дюймы и сантиметры в точки.
Пример задания размеров полей для печатной страницы:
|
Sub Primer1() With Лист4.PageSetup .LeftMargin = 72 ‘1 дюйм (2,54 см) .TopMargin = Application.CentimetersToPoints(2) ‘2 см .RightMargin = 28 ‘приблизительно 1 см .BottomMargin = Application.InchesToPoints(0.5) ‘0,5 дюйма (1,27 см) End With End Sub |
Пример чтения размеров заданных полей для печатной страницы и запись их в ячейки диапазона [A1:A4] активного листа:
|
Sub Primer2() With Лист4.PageSetup [A1] = .LeftMargin [A2] = .TopMargin [A3] = .RightMargin [A4] = .BottomMargin End With End Sub |
Масштаб
Масштабирование рабочего листа для печати осуществляется в VBA Excel с помощью свойства PageSetup.Zoom:
|
Лист4.PageSetup.Zoom = 200 ‘Увеличение масштаба до 200% (от 100%) Worksheets(«Лист4»).PageSetup.Zoom = 80 ‘Уменьшение масштаба до 80% (от 100%) |
Свойство PageSetup.Zoom может задавать или возвращать значение от 10 до 400 процентов.
Ориентация страницы
За ориентацию печатной страницы отвечает свойство PageSetup.Orientation, которое возвращает или задает значение константы из коллекции XlPageOrientation.
Константы коллекции XlPageOrientation:
| Константа | Значение | Описание |
|---|---|---|
| xlPortrait | 1 | Портретный режим (вертикальная ориентация) |
| xlLandscape | 2 | Ландшафтный режим (горизонтальная ориентация) |
Примеры установки ориентации печатной страницы из кода VBA Excel:
|
Worksheets(«Лист4»).PageSetup.Orientation = xlPortrait ActiveSheet.PageSetup.Orientation = xlLandscape |
|
jfd Пользователь Сообщений: 302 |
#1 29.01.2013 18:10:48 Здравствуйте!
Прикрепленные файлы
Изменено: jfd — 29.01.2013 18:11:55 |
||
|
Sergei_A Пользователь Сообщений: 443 |
#2 29.01.2013 19:06:29 Не хватило самой малости
|
||
|
jfd Пользователь Сообщений: 302 |
Спасибо, все заработало как надо. |
|
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
Потому что свойство PrintArea принимает в качестве аргумента текст(т.е. адрес диапазона), а не сам диапазон как объект. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
|
Добрый всем вечер. |
|
|
Sergei_A Пользователь Сообщений: 443 |
#6 12.03.2013 20:19:57
8 — это номер столбца H |
||
|
Выдает ошибку — переменная не определена( |
|
|
Kuzmich Пользователь Сообщений: 7998 |
|
|
Sergei_A Пользователь Сообщений: 443 |
#9 12.03.2013 21:20:49 SerjVorotilov, сорри, к Option Explicit я себя пока не приучил
|
||
|
Большое спасибо Вам, Sergei_A и Kuzmich |
|
|
Что-то не могу понять — область печати в обоих случаях — диапазон А1:Н1, несморя на наличие данных в ячейках, расположенных ниже (но в диапазоне А:Н) Прикрепленные файлы
|
|
|
Sergei_A Пользователь Сообщений: 443 |
#12 13.03.2013 00:06:23 Не думал, что у Вас первый столбец пустой, по-этому всегда лучше сразу кидать пример
|
||
|
Спасибо, Сергей, то что нужно. |
|
|
jfd Пользователь Сообщений: 302 |
#14 13.03.2013 00:16:13 Кажется самый простой вариант
|
||
|
SerjVorotilov Пользователь Сообщений: 231 |
#15 13.03.2013 00:30:10 Сделал через Worksheet_SelectionChange:
Еще раз огромное спасибо Вам, Сергей. |
||
|
SerjVorotilov Пользователь Сообщений: 231 |
#16 13.03.2013 00:33:51 Сделал через Worksheet_SelectionChange:
Еще раз огромное спасибо Вам, Сергей. Блин, только при использовании Worksheet_SelectionChange макрос начинает реагировать на ввод данных в столбцы, выходящие за определенный мной диапазон А:Н, что не есть гуд. |
||
|
Sergei_A Пользователь Сообщений: 443 |
#17 13.03.2013 00:42:26 Воспользуйтесь событием Workbook_BeforePrint
Изменено: Sergei_A — 13.03.2013 00:44:00 |
||
|
marchela Пользователь Сообщений: 8 |
Здравствуйте! |
|
Sanja Пользователь Сообщений: 14838 |
Согласие есть продукт при полном непротивлении сторон. |
|
marchela Пользователь Сообщений: 8 |
#20 18.01.2019 12:13:25 Доброго дня! Почему не в тему? У меня похожая задача. Смотрите вложение Сделал через Worksheet_SelectionChange:
у меня работает, но только нужно реализовать выделение области БЕЗ учета форматов и формул — только по отображаемому значению в ячейке. КАК ОПРЕДЕЛИТЬ ПОСЛЕДНЮЮ ЯЧЕЙКУ НА ЛИСТЕ ЧЕРЕЗ VBA? СПОСОБ 4 Да видел я этот пример — с реализацией туго , помогите, пожалуйста, соединить этот код с кодом из способа 4 Прикрепленные файлы
Изменено: marchela — 18.01.2019 12:20:36 |
||
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
marchela, код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё сообщение. |
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#22 18.01.2019 12:24:26 И ещё:
Т.е. Ваш вопрос лишь косвенно связан с этой темой — задание области печати. |
||
|
Antag Пользователь Сообщений: 52 |
Получится задать разные области печати на нескольких листах книги, чтобы область печати менялась в зависимости от значения одной ячейки в другом листе? Если Главный!R6=»a» → область печати одна, |
|
MikeVol Пользователь Сообщений: 229 Ученик |
#24 24.01.2023 09:17:05 Antag Доброго времени суток. Возможно я не понял вас правильно. Как понял. Вариант:
Изменено: MikeVol — 24.01.2023 09:23:29 |
||
|
Antag Пользователь Сообщений: 52 |
#25 24.01.2023 16:05:48
Если Главный!R6=»a» → область печати на других (но не на всех) листах A1:G256, Изменено: Antag — 24.01.2023 16:06:08 |
||
|
MikeVol Пользователь Сообщений: 229 Ученик |
#26 24.01.2023 18:15:11 Antag,
вы этого не указали в своём стартовом посте #23 Думаю что при таких раскладах вам не составит большого труда подстроить под ваши нужды выше мной выложеный код. Необходимо изначально чётко ставить задачи, тут экстрасенсорными способностями никто не обладает. Удачи вам. Изменено: MikeVol — 24.01.2023 18:16:32 |
||
|
_Boroda_ Пользователь Сообщений: 1496 Контакты см. в профиле |
#27 25.01.2023 09:26:46 Для листов 1 и 3. Без макросов. См. Диспетчер имен Прикрепленные файлы
Скажи мне, кудесник, любимец ба’гов… |
Обычно после настройки на листе область печати остается постоянной. В некоторых случаях вы хотите, чтобы область печати изменялась в соответствии с содержимым печати, которое вы удалили или добавили в любое время. Как этого добиться? В этой статье мы покажем вам метод создания динамической области печати в Excel.
Создание динамической области печати в Excel
Создание динамической области печати в Excel
Как показано на скриншоте ниже, предполагается, что ваша обычная область печати — A1: E5, но данные диапазона могут увеличиваться до строки 10 и столбца G. Вы можете создать динамическую область печати, выполнив следующие действия.
1. Сначала вам нужно создать динамический именованный диапазон. Нажмите Формулы > Менеджер имен. Смотрите скриншот:
2. в Менеджер имен диалогового окна, нажмите Новинки , чтобы открыть Новое имя диалоговое окно. И в диалоговом окне «Новое имя» введите Print_Area_Formula в Имя и фамилия поле и введите формулу =OFFSET($A$1,0,0,COUNTA($A$1:$A$10),COUNTA($A$1:$G$1)) в Относится к поле и, наконец, щелкните OK кнопка. Смотрите скриншот:
Внимание: в формуле, 10 австралийских доллара и $ G $ 1 означают, что область печати не будет больше, чем строка 10 и столбец G. Вы можете изменить их по своему усмотрению.
3. Когда он вернется в Менеджер имен диалоговое окно, закройте его.
4. Выберите диапазон с данными, которые вы установите в качестве области печати (в этом случае мы выбираем A1: E5), затем щелкните Макет страницы > Область печати > Установить область печати. Смотрите скриншот:
5. Нажмите Формулы > Менеджер имен для открытия Менеджер имен диалоговое окно.
6. в Менеджер имен в диалоговом окне выберите Область печати в Имя и фамилия поле, затем замените исходную формулу на = Печать_Области_Формулы (имя созданного вами динамического диапазона) в Относится к поле, а затем щелкните 
Теперь динамическая область печати создана. Вы можете видеть, что область печати корректируется с добавленными или удаленными данными, пока не достигнет указанной строки и столбца. Смотрите скриншот:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (6)
Оценок пока нет. Оцените первым!
Skip to content
Как в Эксель задать область печати
На чтение 1 мин. Просмотров 2.8k.
Что делает макрос: Этот макрос позволяет автоматически задать область печати.
Содержание
- Как макрос работает
- Код макроса
- Как использовать
Как макрос работает
В этом простом макросе, мы используем свойство PrintArea, чтобы определить диапазон ячеек, которые будут включены при печати. Как вы можете видеть, мы просто используем свойство PrintArea с адресом UsedRange. Свойство UsedRange дает диапазон, который охватывает ячейки, которые были использованы для ввода данных.
Чтобы сохранить эту динамику, мы реализуем код в изменении событии рабочего листа:
Код макроса
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address End Sub
Как использовать
Для реализации этого макроса, вам нужно скопировать и вставить его в окно кода события Worksheet_Change. Размещение макроса позволяет запускать каждый раз, когда вы дважды щелкаете на листе.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта, найти свой проект / имя рабочей книги и нажмите на знак плюс рядом с ней, чтобы увидеть все листы.
- Нажмите на лист, в котором вы хотите, чтобы вызвать код.
- Выберите Изменить событие из событий в раскрывающемся списке.
- Введите или вставьте код.
Собственно вопрос в этом и заключается. Как расширить программно (C#) область печати (границы) в Excel файле?
задан 9 дек 2015 в 11:07
Используйте свойство PageSetup.PrintArea:
IPageSetup pageSetup = worksheet.PageSetup;
pageSetup.PrintArea = "A1:H42";
ответ дан 9 дек 2015 в 11:20
andreychaandreycha
25k4 золотых знака45 серебряных знаков81 бронзовый знак
1








