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$3:$H$25», Sub Макрос1() |
|
vlanib Пользователь Сообщений: 26 |
|
{quote}{login=vlanib}{date=03.05.2010 10:01}{thema=}{post}Selection.PrintOut{/post}{/quote} |
|
vlanib Пользователь Сообщений: 26 |
Всё просто. Sub Макрос1() |
{quote}{login=vlanib}{date=03.05.2010 10:06}{thema=}{post}Всё просто. Sub Макрос1() |
|
Ирина Гость |
#7 04.12.2012 01:50:39 1. На листе создала управляющую кнопку, записала макрос (выделила диапазон, нажала кнопку форма). Когда нажимаю на кнопку, запрашивает названия столбцов и не создает форму. Когда проделываю эту операцию без кнопки, все работает? 2. Первая кнопка подает на печать выделенный диапазон. К моему компьютеру не подключен принтер. А как изменить запись макроса, чтобы фрагмент печатался принтером по умолчанию на любом компютере, если это возможно? Прикрепленные файлы
|
avenger24 1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
||||
1 |
||||
04.06.2015, 09:33. Показов 1535. Ответов 13 Метки нет (Все метки)
Есть 3 диапазона , Все идеально помещается на 1 страницу. Но хочу выполнять этот макрос программно ( (для начало пробовал с 2 диапозонами)
Но каждый диапозон печатается на отдельной странице(
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
04.06.2015, 09:48 |
2 |
avenger24, а почему нужно печатать отдельные диапазоны, а не весь лист? На листе есть еще данные, которые не надо печатать?
0 |
1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
|
04.06.2015, 09:55 [ТС] |
3 |
Казанский, Ясное дело , можно делать все руками) как впринципе я сейчас делаю , но я работаю над приложением для полной оптимизации , чтобы мои коллеги тоже могли быстро выполнять мою работу) Я рассматривал вариант над скрытием не нужного текста , но думаю что печатный лист будем иметь неадекватную форму)
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,508 Записей в блоге: 4 |
|
04.06.2015, 10:05 |
4 |
у меня мелькнула идея —через снимок любое количество диапазонов и печатаю вордом, там слить листы просто
0 |
1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
|
04.06.2015, 10:06 [ТС] |
5 |
shanemac51, я вот что-то уже час шарюсь в интернете и ничего подходящего((( Думаю , может через Word? но это 1 лишнее действие
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,508 Записей в блоге: 4 |
|
04.06.2015, 10:32 |
6 |
нажать на кнопку не велика работа если в диапазоне только обычный текст —не заморачиваюсь, пишу программно, не обращая внимания на форматирование исходника(екселя) —ведь основная цель — автоподгонка таблицы(таблиц) по ширине листа и шапка текущей таблицы на каждом листе, если таблица не влезает на лист
0 |
1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
|
04.06.2015, 10:47 [ТС] |
7 |
shanemac51, я подскажите как отправить из экселя в ворд не тольлько текст , но и форматы ячейки? может быть у вас какие-нибудь маленькие примерчики есть?)))) спасибо!
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,508 Записей в блоге: 4 |
|
04.06.2015, 11:00 |
8 |
можно диапазон(ы) сохранить в файл в формате НТМ Добавлено через 2 минуты
0 |
1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
|
04.06.2015, 11:35 [ТС] |
9 |
shanemac51, хотелось бы конечно , без лишнихт телодвижений ( потому что процедура такая будет выполняться постоянно . а не 1 раз в неделю(
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,508 Записей в блоге: 4 |
|
04.06.2015, 11:41 |
10 |
хоть 100 раз в день
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,508 Записей в блоге: 4 |
|
04.06.2015, 11:51 |
11 |
поместите все в C:TEMP, распакуйте можно вставить открытие ворда в макрос
1 |
1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
|
05.06.2015, 06:27 [ТС] |
12 |
shanemac51, Сейчас попробую , создавать Word документ через копи паст автоматизировано , при этом обрамление тоже передаётся
0 |
Модератор 11342 / 4661 / 748 Регистрация: 07.08.2010 Сообщений: 13,508 Записей в блоге: 4 |
|
05.06.2015, 07:22 |
13 |
вы зря боитесь за других —если поймете вы, поймут и другие(вызвать макрос в ексель,выделить и нажать f9 в ворде—невелика сложность)
0 |
1 / 1 / 0 Регистрация: 02.04.2015 Сообщений: 84 |
|
05.06.2015, 07:31 [ТС] |
14 |
shanemac51, да и вообще не получается пока нормально копи пастить таблицы из эксель в ворд( При 2 копи пасте , 2 таблица удаляет первую))
0 |
Параметры печатной страницы в 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 |