Добрый день подскажите пожалуйста как создать макрос для печати всех страниц из одной книги. В книге 100 листов нужно напечатать с первого листа одну страницу, со второго листа две страницы и так 100 листов. |
|
ran Пользователь Сообщений: 7091 |
Для начала воспользоваться макрорекордером |
vikttur Пользователь Сообщений: 47199 |
Поднимите глаза. Над темой, первое предложение: Правее текста окошко поиска. Введите туда название Вашей темы… Если там не нашли подходящего, дочитайте текст над темой. Если текста мало, правила здесь: <EM>http://www.planetaexcel.ru/forum.php?thread_id=8735</EM> |
Парни я все понимаю что у вас уже куча таких тем, но мне нужно не только печать страниц но и их последующая печать в файл и как все это объеденить в единый макрос((( |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Интересно, что ТС имел ввиду под: «их последующая печать в файл»? Я сам — дурнее всякого примера! … |
vikttur Пользователь Сообщений: 47199 |
Вы по ссылке смотрели? Читали, что нужен ВАШ ПРИМЕР?! Нашли макрос печати страниц, подходящий под Вашу задачу? Пока что видно только желание «дайте мне готовое». |
Я только совсем недавно начал читать и пытаться изучить приметивные макросы. До этого я полтора года печатал все 100 листов по отдельности, задавая каждый раз для каждого листа печать то 1 страницу то две. А оказывается, что можно все это оптимизировать и довести до автоматизации. Я просто прошу подсказать мне с чего в в принципе нужно начинать, для того чтобы реализовать мою задачу, пока я даже не знаю с чего начать(((( |
|
vikttur Пользователь Сообщений: 47199 |
Подсказали, как найти макросы, подсказали, что нужен Ваш пример…. |
Я сейчас использовал вот такого типа макрос и задавая в ручную область печати для каждого листа. Могу ли я задать условием, что печатать только в листах отсек1 две страницы, а в листах отсек1 (2) 1 страницу. |
|
ran Пользователь Сообщений: 7091 |
Восхищен! |
В файле post_354534.xlsx есть книга Excel в ней 4 листа, задача вывести на печать в один файл содержимое 4х листов(с условием отсек1 две страницы, а в листах отсек1 (2) 1 страницу) |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Страниц, или копий, продвинутый Вы наш? Я сам — дурнее всякого примера! … |
Именно страницы, я пока только до такого догадался, задал на каждом листе область печати, а потом через макрос и If Not sh.[b2].Value = 0 Then s = s & sh.Name & «,» |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#15 13.08.2012 17:55:30 Однако… У Вас на всех листах в В2 — № точки. Мой МР выдал мне такое: Я сам — дурнее всякого примера! … |
Что делает макрос
Это очень просто. Все, что нам нужно сделать — это выбрать листы, которые мы хотим напечатать. Затем мы используем метод печати, чтобы запустить. Все листы, которые вы выбрали, печатаются на одном дыхании.
Код макроса
Sub Macros25a()
'Печать определенных листов
ActiveWorkbook.Sheets(Array("Лист1", "Лист3", "Лист5")).PrintOut Copies:=1
End Sub
Хотите напечатать все рабочие листы в книге? Это еще проще.
Sub Macros25b()
'Печать всех листов
ActiveWorkbook.Worksheets.PrintOut Copies:=1
End Sub
Как использовать
Для реализации этого макроса , вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11
- Щелкните правой кнопкой мыши в окне проекта.
- Выберите Insert➜Module
- Введите или вставьте код во вновь созданном модуле. Вам, вероятнее всего, понадобиться изменить имя листа.
Макрос для печати первой и последней страницы листа Excel. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Olyabk,
я обшибся, когда написал, что знаю код.
Я назову программу, с помощью которой это можно сделать. С тебя 200 руб.
Добавлено через 3 минуты
НикоН,
а я наркоман, скажу тебе по секрету я пишу макросы для Word для работы.
Я сейчас разрабатываю новые шаблоны, но работу приходится делать на старых Шаблонах и сам удивляюсь, как они срабатывают: появляются всякие диалоговые окна, предупреждения, о которых я уже забыл — т.к. до 15 часов отхожу от алкоголя.
Добавлено через 9 часов 56 минут
Olyabk,
Скачай виртуальный принтер — doPDF v7 (он бесплатный, но мне кажется, что он может искажать информацию) или FinePrint (платная программа).
Печатаешь сначала в виртуальный принтер, а затем выбираешь реальный принтер — свойства — выбираешь сколько страниц на лист печатать.
Параметры печатной страницы в 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 |