Макрос для печати определенных страниц 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)» — если две. Дальше сами разберетесь?

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

Добрый день.
Сильно не обижайте умными словами.
Хочу сделать печать определенных страниц, в зависимости от отмеченных checkbox
Отметил 3 чекбокса, нажал печать…
На первой странице joxi.ru/RmzqZ3JH09O0Nr

Набросал код бомжа, понятно что он страшный/кривой/нерабочий и т.д. (я первый день в этом)

Dim strPage As String
Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    'Application.PrintOut Pages:="1,2"
        strPage = "2"
    ElseIf CheckBox1.Value = False Then
        strPage = ""
    End If
End Sub
Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
    'Application.PrintOut Pages:="1,2"
        strPage = "3"
    ElseIf CheckBox2.Value = False Then
        strPage = ""
    End If
End Sub
Private Sub CommandButton1_Click()
    'MsgBox strPage
    Application.PrintOut Pages:=strPage
End Sub

Что должно передаваться (строка, число) и как правильно передать в Application.PrintOut Pages:=»» номера страниц (склеенную переменную strPage, т.е при двух отмеченных чекбоксах, должно быть что то типо 23. Конкатенацию надо как то сделать, потом встроенной функцией разделить на 2,3. Мозгов не хватает) ?

0 / 0 / 0

Регистрация: 23.10.2016

Сообщений: 3

1

23.10.2016, 19:05. Показов 23868. Ответов 4


Студворк — интернет-сервис помощи студентам

Всем доброе время суток!
Помогите пожалуйста.
Дано:
Лист с данными о клиенте и виде выполняемых работ, на котором определяется какой из 65 листов нужно напечатать.
Лист с договором, Лист с актом выполненных работ, 65 листов с заказ-нарядами, лист с таблицей информационной ( цены, и прочее).
После заполнения листа с данными, нужно вывести на печать «заказ-наряд», «договор», «акт».
Листы с заказ-нарядами называются «1», «2», «3»… и так далее
На текущий момент в листе данных выводится инфо-текст типа «напечатайте договор, акт и лист №…» (номер листа определяется по таблице информации.
Хочется кнопку, которая без поиска и листаний выведет на печать необходимый пакет документов.
Как вывести на печать необходимый лист с заказ-нарядом, если его «номер» определяется по «формуле».

Буду очень благодарен за помощь!



0



Эксперт NIX

2670 / 786 / 176

Регистрация: 14.01.2013

Сообщений: 3,676

24.10.2016, 13:39

2

Цитата
Сообщение от SirGUN13
Посмотреть сообщение

Хочется кнопку, которая без поиска и листаний выведет на печать необходимый пакет документов.

Так сделайте себе такую кнопку. В чём проблема?

Цитата
Сообщение от SirGUN13
Посмотреть сообщение

Буду очень благодарен за помощь!

В каком виде предоставить помощь? С точки зрения информационной помощи, здесь, на форуме, её целый вагон и маленькая тележка. С практической, без наличия материала, над которым все эти мероприятия должны проводиться, не о чем и писать.



0



0 / 0 / 0

Регистрация: 23.10.2016

Сообщений: 3

27.10.2016, 14:00

 [ТС]

3

Цитата
Сообщение от Kubuntovod
Посмотреть сообщение

Так сделайте себе такую кнопку. В чём проблема?

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

Материала на форуме не нашел. только как напечатать определенный лист в книге, если знаешь его название.
Но как напечатать лист, название которого — цифра, которая определяется рассчетной формулой?
Вот в чем вопрос.

Попробую еще раз объяснить:
В зависимости от работ, выполняемых, нужно один из 62 листов.
Могу каждой «работе» задать соответствие в виде цифры (так и сделано).
В данный момент выводится текст типа «Напечатайте лист № 3» (цифра «3» взята для примера).
Но нужен макрос, который автоматически печатал бы нужный лист.
Допустим формула будет такая: «Данные_клиента!K9+Акт_работ!I7» (просто для примера)
Эта формула определяет цифру, которая соответствует номеру листа с наряд-заказом.
И именно этот определенный лист надо напечатать

С уважением ко всем!



0



SirGUN13

0 / 0 / 0

Регистрация: 23.10.2016

Сообщений: 3

28.10.2016, 18:27

 [ТС]

4

Ладно, гуру ВижуалБейсика… Для гуру Ваш ответ затянулся. Успел уже сам разобраться.
Для будущих поколений, задавшихся аналогичным вопросом, расскажу ,как я вышел из этой ситуации:
Вывел в ячейку C14 значение, равное номеру листа, который нужно распечатать.
Видимо вся загвоздка была в том, что я переменную «а» описывал как число, а нужно было как текст.

PureBasic
1
2
3
4
5
    Dim a As String
    a = Range("C14").Value
    Sheets(a).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

Добавлено через 48 минут
забыл сказать, что перед «a = Range(«C14″).Value» нужно активным сделать тот лист, на котором в ячейке С14 и написано это значение



0



Kubuntovod

Эксперт NIX

2670 / 786 / 176

Регистрация: 14.01.2013

Сообщений: 3,676

28.10.2016, 19:21

5

Цитата
Сообщение от SirGUN13
Посмотреть сообщение

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

Вы увидели несуществующее. Я говорил серьёзно. А чтобы сделать то, что Вам хотелось, надо полистать форум, посмотреть на примеры и путем не хитрых умозаключений написать код.

Цитата
Сообщение от SirGUN13
Посмотреть сообщение

Материала на форуме не нашел. только как напечатать определенный лист в книге, если знаешь его название.
Но как напечатать лист, название которого — цифра, которая определяется рассчетной формулой?
Вот в чем вопрос.

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

Visual Basic
1
a = CStr(Формула)

И далее уже Ваше:

Visual Basic
1
Sheets(a).Select

Цитата
Сообщение от SirGUN13
Посмотреть сообщение

забыл сказать, что перед «a = Range(«C14″).Value» нужно активным сделать тот лист, на котором в ячейке С14 и написано это значение

Вы забыли рассказать, что за хитрая формула выводит имя требуемого листа.

Цитата
Сообщение от SirGUN13
Посмотреть сообщение

Ладно, гуру ВижуалБейсика… Для гуру Ваш ответ затянулся.



0



This free Excel macro allows you to print a pre-specified selection of pages from Excel. This means you can print 2 pages from a 10 page workbook or file or 4 pages from that workbook etc.

The macro allows you to choose which pages you want to print by inputting the number for the from and to argument. The from argument is the page number from which printing will start and the to number is the page number up to which will be printed.

You can also make this macro more dynamic in nature by setting the from and to arguments equal to variables and then get numbers for those variables from a user input box or dynamic worksheet calculation.

Where to install the macro:  Module

Macro to Print Specific Pages in Excel

Sub Print_Specific_Pages()

'Prints page x to page x
'You tell Excel which pages you want to print - i.e. pages 1 to 5; pages 4 to 7; etc.
'Replace the 5 with the page number from which you would like to start printing
'Replace the 10 with the page number to which you would like to print in Excel

Worksheets.PrintOut from:=5, to:=10

End Sub


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Similar Content on TeachExcel

Print Different Headers for Odd and Even Pages in Excel

Tutorial: How to print pages in Excel with different headers for odd and even pages.
Steps
Go to the…

Print Preview Display for Specific Worksheets in Excel

Macro: This free Excel macro allows you to display the print preview mode or window in Excel for …

Print Entire Workbook in Excel

Macro: This free excel macro allows you to print the entire workbook in Excel. You can easil…

Allow Only Certain People to Edit Specific Cells in Excel

Tutorial:
How to allow only certain people to edit certain cells or ranges in Excel.

This is a sec…

Determine if Cells Contain a Specific Value in Excel

Tutorial: Find if a cell or range of cells contains a specific value in Excel. This method can be us…

Count the Number of Cells that Start or End with Specific Text in Excel

Tutorial: How to count cells that match text at the start or the end of a string in Excel.
If you w…

How to Install the Macro

  1. Select and copy the text from within the grey box above.
  2. Open the Microsoft Excel file in which you would like the Macro to function.
  3. Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
     Or For other ways to get there, Click Here.
  4. On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
  5. If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
  6. If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
  7. If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
  8. Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
  9. You are now ready to run the macro.

Макрос для печати определённых листов книги

andron359

Дата: Четверг, 19.01.2023, 11:53 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 133


Репутация:

0

±

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


2010

Добрый день !

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

Всем спасибо за помощь.

Сообщение отредактировал andron359Четверг, 19.01.2023, 15:41

 

Ответить

InExSu

Дата: Пятница, 20.01.2023, 16:07 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 646


Репутация:

96

±

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


Excel 2010

Привет, andron359!

[vba]

Код

Sub Sheets_Print_Active()
   Sheets_Print ActiveWorkbook, 2
End Sub

Sub Sheets_Print(book As Workbook, skip As Long)
   ‘ Печатать видимые листы, кроме skip первых

   Dim index As Long

   With book

      For index = skip + 1 To .Worksheets.count

         If .Worksheets(index).visible Then _
            .Worksheets(index).PrintOut

      Next
   End With
End Sub

[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel

 

Ответить

andron359

Дата: Понедельник, 23.01.2023, 12:52 |
Сообщение № 3

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 133


Репутация:

0

±

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


2010

InExSu,
Спасибо большое !

 

Ответить

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