Макрос excel печать одной страницы

 

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

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Для начала воспользоваться макрорекордером

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Поднимите глаза. Над темой, первое предложение:  
«Прежде чем задать вопрос — попробуйте найти ответ поиском.»  

  Правее текста окошко поиска. Введите туда название Вашей темы…  

  Если там не нашли подходящего, дочитайте текст над темой. Если текста мало, правила здесь:  

<EM>http://www.planetaexcel.ru/forum.php?thread_id=8735</EM>

 

Парни я все понимаю что у вас уже куча таких тем, но мне нужно не только печать страниц но и их последующая печать в файл и как все это объеденить в единый макрос(((

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Интересно, что ТС имел ввиду под: «их последующая печать в файл»?  
Arkadiy, Вы не хотите ничего сделать для себя. Чего тогда ждете от нас?

Я сам — дурнее всякого примера! …

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Вы по ссылке смотрели? Читали, что нужен ВАШ ПРИМЕР?!  

  Нашли макрос печати страниц, подходящий под Вашу задачу?  
Найдите еще макрос для «печати» в файл (это как?).  
Вставьте эти два макроса в свой пример. Покажите народу. Вам помогут.  

  Пока что видно только желание «дайте мне готовое».

 

Я только совсем недавно начал читать и пытаться изучить приметивные макросы. До этого я полтора года печатал все 100 листов по отдельности, задавая каждый раз для каждого листа печать то 1 страницу то две. А оказывается, что можно все это оптимизировать и довести до автоматизации. Я просто прошу подсказать мне с чего в в принципе нужно начинать, для того чтобы реализовать мою задачу, пока я даже не знаю с чего начать((((

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Подсказали, как найти макросы, подсказали, что нужен Ваш пример….  
Что еще подсказать?  
Представьте, что я не умею резать хлеб и пришел к Вам с вопросом. Что Вы мне посоветуете? Без ножа и буханки легко будет объяснить?

 

Я сейчас использовал вот такого типа макрос  
Sub MyPrint()  
Dim sh As Worksheet, s  
With ThisWorkbook  
For Each sh In .Worksheets  
If Not sh.[b2].Value = 0 Then s = s & sh.Name & «,»
Next sh  
s = Split(Left(s, Len(s) — 1), «,»)  
.Worksheets(s).PrintOut Copies:=1  
End With  
End Sub  

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

 
 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Восхищен!  
Код в одном месте, файл в другом, а что печатать надо — все равно не понятно.

 

В файле post_354534.xlsx есть книга Excel в ней 4 листа, задача вывести на печать в один файл содержимое 4х листов(с условием отсек1 две страницы, а в листах отсек1 (2) 1 страницу)

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Страниц, или копий, продвинутый Вы наш?  
И что там делают строки:  
If Not sh.[b2].Value = 0 Then s = s & sh.Name & «,»
и  
s = Split(Left(s, Len(s) — 1), «,»)  
Если копий, то и вставьте в каждый лист в А1 нужное число копий. Тогда:  
sh.PrintOut Copies:=Sh.[a1].value
Короче:  
Sub MyPrint()  
Dim sh As Worksheet  
For Each sh In ThisWorkbook.Worksheets  
sh.PrintOut Copies:=Sh.[a1].value
Next sh  
End Sub

Я сам — дурнее всякого примера! …

 

Именно страницы, я пока только до такого догадался, задал на каждом листе область печати, а потом через макрос и If Not sh.[b2].Value = 0 Then s = s & sh.Name & «,»
если данная ячейка не пуста то печатать.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#15

13.08.2012 17:55:30

Однако… У Вас на всех листах в В2 — № точки. Мой МР выдал мне такое:  
ExecuteExcel4Macro «PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)» — если печатать одну страницу и :  
ExecuteExcel4Macro «PRINT(2,1,2,1,,,,,,,,2,,,TRUE,,FALSE)» — если две. Дальше сами разберетесь?

Я сам — дурнее всякого примера! …

Что делает макрос


Это очень просто. Все, что нам нужно сделать — это выбрать листы, которые мы хотим напечатать. Затем мы используем метод печати, чтобы запустить. Все листы, которые вы выбрали, печатаются на одном дыхании.

Код макроса


  1. Sub Macros25a()
  2. 'Печать определенных листов
  3.    ActiveWorkbook.Sheets(Array("Лист1", "Лист3", "Лист5")).PrintOut Copies:=1
  4. End Sub

Хотите напечатать все рабочие листы в книге? Это еще проще.

  1. Sub Macros25b()
  2. 'Печать всех листов
  3. ActiveWorkbook.Worksheets.PrintOut Copies:=1
  4. End Sub

Как использовать


Для реализации этого макроса , вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11
  2. Щелкните правой кнопкой мыши в окне проекта.
  3. Выберите Insert➜Module
  4. Введите или вставьте код во вновь созданном модуле. Вам, вероятнее всего, понадобиться изменить имя листа.

Макрос для печати первой и последней страницы листа Excel.

ilias-arh

Дата: Вторник, 02.06.2015, 11:04 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день. Требуется автоматизировать печать первой и последней страницы всех листов книги Excel 2010.
На форуме нашел макрос от пользователя Pelena, который подходит частично:

[vba]

Код

Public Sub prn()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
sh.PrintOut From:=1, To:=1, Copies:=1
Next
End Sub

[/vba]

Он печатает только первые страницы.
Подскажите, как его переделать, чтобы печаталась первая и последняя страницы листов книги. Заранее спасибо.

Сообщение отредактировал ilias-arhВторник, 02.06.2015, 11:06

 

Ответить

Manyasha

Дата: Вторник, 02.06.2015, 11:24 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

ilias-arh, попробуйте так:[vba]

Код

Public Sub prn()
      Dim sh As Worksheet
      For Each sh In ThisWorkbook.Sheets
          With sh
              kolPages = (.HPageBreaks.Count + 1) * (.VPageBreaks.Count + 1)
              sh.PrintOut From:=1, To:=1, Copies:=1
              sh.PrintOut From:=kolPages, To:=kolPages, Copies:=1
          End With
      Next
End Sub

[/vba]
Не проверяла обязателен ли параметр To, на всякий случай добавила.


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал ManyashaВторник, 02.06.2015, 11:26

 

Ответить

ilias-arh

Дата: Вторник, 02.06.2015, 11:42 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Спасибо, все работает.

 

Ответить

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


Понравилась статья? Поделить с друзьями:
  • Макрос excel печать на принтере
  • Макрос excel перенос строк
  • Макрос excel перенос столбца
  • Макрос excel перенос листов на один
  • Макрос excel перенос значений