Excel макрос печать нескольких листов

 

Olga_L

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

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

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

 

ikki

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

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

#2

25.08.2015 10:21:13

Цитата
Olga_L написал: Потому и не получаеться ничего.

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

Знание VB на уровне «записать»

приводит к примерно такому результату:

Код
Sub Макрос1()
    Sheets(Array("1-4", "5-8", "9-12")).Select
    Sheets("1-4").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End Sub

от него рукой подать до рабочего макроса.

но в Вашем файле даже таких попыток нет.

Изменено: ikki25.08.2015 10:22:55

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Olga_L

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

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

 Уважаеммый Ikki, возможно для Вас и «рукой подать», а для меня привязать записанный макрос «быстрой печати» к условию пока целая проблема, на решение которой было потрачено целое утро. Поверьте, могла бы решить сама, не стала бы обращаться на форум. А попыток в моем файле Вы не увидели, потому как, я не была уверена в том, что в даном случае нужно начинать с записи «быстрой печати».

 

Olga_L

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

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

Я не прошу решить задачу за меня. Прошу, чтобы подсказали хотя бы каким образом ее решить.

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#5

25.08.2015 10:59:31

Olga_L, проверяйте.

Скрытый текст

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Olga_L

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

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

Мне выдает ошибку. Run-time error 438. Пишет что «обьект не поддердивает это свойство или метод».

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#7

25.08.2015 11:32:04

Цитата
Olga_L написал: Прошу, чтобы подсказали хотя бы каким образом ее решить

Подсказка была, а ошибку в коде подправить можете самостоятельно, т.к.

Цитата
Olga_L написал: Я не прошу решить задачу за меня

;) Не получится — сообщите.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Olga_L

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

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

Я себе не так даный макрос представляла. В этом коде для меня почти ничего не понятно. Ладно.. и на том спасибо. Будем разбираться

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#9

25.08.2015 12:25:38

Olga_L, простите, что не угодил. :)

Скрытый текст

Так понятней?

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Если яч. H3=3, то надо будет напечатать листы с 1_4 по 17_20, т.е. ВСЕ листы?
Ведь 3 < 20 ?
Я хочу сказать, что по Вашим условиям, всегда надо печатать все листы.

Изменено: Михаил Лебедев25.08.2015 12:33:51

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Михаил Лебедев, срабатывает приоритетное правило. Как понял, правила взаимоисключающие.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Михаил Лебедев

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

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

#12

25.08.2015 12:48:48

Цитата
JayBhagavan написал:
Как понял, … т .д. …

JayBhagavan

, я вот об этом и хочу сказать. Ну, что я, например, не так понял. Задача, на мой взгляд, поставлена не совсем корректно ☺

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Михаил Лебедев

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

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

#13

25.08.2015 13:06:42

Если логика от

Olga_L

именно такая, как понял

JayBhagavan

, тогда вот такой еще вариант (правда, в отличие от вар. от

JayBhagavan

с elseif, мой печатает листы в обратном порядке ☺):

Код
Sub procPrint()
    var_val = Worksheets("Лист1").[H3].Value
    Select Case var_val
    Case Is > 16: Sheets("17-20").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Case Is > 12: Sheets("13-16").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Case Is > 8:  Sheets("9-12").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Case Is > 4:  Sheets("5-8").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Case Is > 0: Sheets("1-4").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    End Select
End Sub

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Imelman

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

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

#14

28.10.2017 13:20:04

Всем хороших выходных
Есть вопрос, по этой теме, задам сюда же пожалуй чтоб темы не плодить.
Есть два листа эксель, как их вывести на печать одной отправкой? (Необходимо чтоб принтер подхватил и напечатал двухстороннюю)

Код
Sheets("2").Range("A1:I70").PrintOut Copies:=1, Collate:=True
Sheets("3").Range("A1:I70").PrintOut Copies:=1, Collate:=True

Может как-то по умному Range (через запятую) написать?
Возможно ли вообще?  

Изменено: Imelman28.10.2017 13:21:12

 

Hugo

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

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

#15

28.10.2017 13:26:26

Можно так:

Код
Sheets(Array("2", "3")).PrintOut Copies:=1, Collate:=True

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

 

Imelman

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

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

#16

28.10.2017 15:09:28

Да, в такой форме сработало:

Код
    Sheets(Array("1", "2")).PrintOut Copies:=1, Collate:=True, _
       IgnorePrintAreas:=False

Спасибо

Skip to content

На чтение 1 мин. Просмотров 3k.

Что делает макрос: Если вы хотите распечатать все листы файла (или отдельные) вручную в Excel, для этого нужно зажать клавишу CTRL на клавиатуре, выбрать листы, которые требуется распечатать, и нажать кнопку печать. Если вы делаете это достаточно часто, можете использовать этот простой макрос.

Содержание

  1. Как работает макрос
  2. Код макроса
  3. Как использовать

Как работает макрос

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

Код макроса

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

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

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

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

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

Содержание:

  1. Печатайте все листы за один раз
  2. Печать нескольких листов (выбранных) за один раз
  3. Печать нескольких листов с определенной областью печати
  4. Настройка области печати вручную
  5. Настройка области печати с помощью VBA

[lyte id=’sgISE1MCqH8′ /]

Excel дает вам множество вариантов, когда вы пытаетесь распечатать свою работу. Вы можете распечатать весь рабочий лист, определенную область на листе, распечатать несколько листов или все листы за один раз.

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

И если вы хотите распечатать определенную область на нескольких / всех листах, вы также можете сделать это с помощью небольшого количества магии VBA.

Итак, приступим!

Печатайте все листы за один раз

В Excel есть встроенная функция, которая позволяет указать печать всех листов за один раз.

Ниже приведены шаги для печати всех листов в книге:

  1. Перейдите на вкладку Файл.
  2. Нажмите на опцию печати
  3. На странице «Печать» щелкните раскрывающееся меню «Параметры печати».
  4. Нажмите Распечатать всю книгу
  5. Нажмите на печать

Вышеупомянутые шаги распечатают все листы в книге. Если у вас установлена ​​область печати на некоторых листах, то будет напечатана только эта область печати.

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

Достаточно просто!

А что, если вы хотите напечатать только отдельные листы, а не всю книгу.

Читай дальше!

Печать нескольких листов (выбранных) за один раз

Этого снова довольно легко добиться.

Все, что вам нужно сделать, это выбрать те конкретные листы, которые вы хотите распечатать, а затем распечатать их!

Ниже приведены шаги для печати некоторых конкретных листов в книге в Excel:

  1. Выберите все листы, которые хотите распечатать. Для этого, удерживая клавишу Ctrl, выбирайте листы один за другим. В этом примере я выбираю листы 1, 4 и 5.
  2. Перейдите на вкладку Файл.
  3. Нажмите на опцию печати
  4. На странице «Печать» щелкните раскрывающееся меню «Параметры печати».
  5. Нажмите «Печатать активные таблицы» (в большинстве случаев это уже вариант по умолчанию, но если это не так, вы можете выбрать его из раскрывающегося списка)
  6. Нажмите на печать

Когда вы выбираете несколько листов, все они действуют как активные листы при печати.

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

Печать нескольких листов с определенной областью печати

Этот немного сложнее двух предыдущих.

Предположим, у вас есть книга с несколькими листами, и вы хотите напечатать определенную область с каждого листа.

Возможно, на каждом листе есть сводные данные, и вы хотите распечатать только эти данные, а не весь рабочий лист.

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

Теперь, когда дело доходит до настройки области печати:

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

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

Итак, позвольте мне быстро показать вам, как настроить область печати вручную и с помощью VBA.

Настройка области печати вручную

Ниже приведены шаги для этого:

  1. Выберите ячейки, которые вы хотите покрыть в области печати.
  2. Перейдите на вкладку «Макет страницы».
  3. В группе «Параметры страницы» нажмите «Область печати».
  4. Нажмите «Установить область печати».

Вот и все!

Это установит область печати для выбранных ячеек, и при печати этого листа будет напечатана только область печати.

Делать это нужно вручную для каждого листа. Поэтому, если вы хотите распечатать определенные области на Sheet1, Sheet4 и Sheet5, вам придется делать это для каждого листа отдельно.

Настройка области печати с помощью VBA

Если у вас много листов, настройка области печати вручную может занять много времени.

В этом случае вы также можете использовать VBA, чтобы быстро установить область печати на одном листе, а затем запустить код, чтобы реплицировать его на все другие листы.

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

Ниже приведен код макроса VBA, который сделает это:
Sub SetPrintAreas1 () Dim PrntArea As String Dim ws As Worksheet PrntArea = ActiveSheet.PageSetup.PrintArea For Each ws In Worksheets ws.PageSetup.PrintArea = PrntArea Next Set wks = Nothing End Sub
Приведенный выше код использует область печати с активных листов, переходит ко всем листам в книге и устанавливает ту же область печати в каждом из этих листов.

Он использует цикл для просмотра каждого листа, а затем устанавливает ту же область на каждом листе, что и область печати. Если вы хотите, чтобы это было разным для каждого листа, я считаю, что делать это вручную будет быстрее.

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

Вы можете поместить этот код макроса VBA в обычный модуль и запустить его оттуда.

Итак, это несколько сценариев, в которых вы можете распечатать несколько листов в Excel за один раз.

Надеюсь, вы нашли этот урок полезным!

Печать разного количества листов по условию

Garik007

Дата: Четверг, 18.05.2017, 18:19 |
Сообщение № 1

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

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

Сообщений: 102


Репутация:

0

±

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


Excel 2013, 2016

Добрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках N44-N62 (в данных ячейках формула: если сумма > 0, то печатается определенное количество).
[vba]

Код

Sub печать()
  Application.EnableEvents = False
  If Application.Dialogs(xlDialogPrint).Show = True Then
    Worksheets(«a2-1»).PrintOut Copies:=Range(«N44»).Value
    Worksheets(«b10»).PrintOut Copies:=Range(«N45»).Value
    Worksheets(«b12-1»).PrintOut Copies:=Range(«N46»).Value
    Worksheets(«b18-1»).PrintOut Copies:=Range(«N47»).Value
    Worksheets(«b23-1»).PrintOut Copies:=Range(«N48»).Value
    Worksheets(«c55»).PrintOut Copies:=Range(«N49»).Value
    Worksheets(«c55-1»).PrintOut Copies:=Range(«N50»).Value
    Worksheets(«c11»).PrintOut Copies:=Range(«N51»).Value
    Worksheets(«d13-1»).PrintOut Copies:=Range(«N52»).Value
    Worksheets(«d13-2»).PrintOut Copies:=Range(«N53»).Value
    Worksheets(«d7-1»).PrintOut Copies:=Range(«N54»).Value
    Worksheets(«e9»).PrintOut Copies:=Range(«N55»).Value
    Worksheets(«e13-3»).PrintOut Copies:=Range(«N56»).Value
    Worksheets(«e26»).PrintOut Copies:=Range(«N57»).Value
    Worksheets(«f5-3»).PrintOut Copies:=Range(«N58»).Value
    Worksheets(«f5-4»).PrintOut Copies:=Range(«N59»).Value
    Worksheets(«f9-3»).PrintOut Copies:=Range(«N60»).Value
    Worksheets(«g9-4»).PrintOut Copies:=Range(«N61»).Value
    Worksheets(«g10-2»).PrintOut Copies:=Range(«N62»).Value
  End If
  Application.EnableEvents = True
End Sub

[/vba]
Проблема в том, что печатаются только 2 первых листа с необходимым количеством копий, а потом макрос останавливается или без объяснения причин или с ошибкой 400.
Можно ли это исправить?

 

Ответить

KuklP

Дата: Четверг, 18.05.2017, 18:37 |
Сообщение № 2

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

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

Сообщений: 2369


Репутация:

486

±

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


2003-2010

Может проблема в том, что для всех этих Range(«N44»)… не указан родительский объект? Откуда они берутся, файла-то нет :(


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Garik007

Дата: Четверг, 18.05.2017, 20:45 |
Сообщение № 3

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

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

Сообщений: 102


Репутация:

0

±

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


Excel 2013, 2016

KuklP, файл смогу только завтра приложить, только как-то странно получается условия формирования Range(«N44»)… везде одинаковы, а печать идет только первых двух. Если убрать 44 и 45 будет без проблем печатать 46 и 47, убрать 46 и 47 будет нормально печатать 48 и 49 и так далее, но только всегда первые 2 листа.
А где его взять этот родительский объект? Указание вручную цифр на листе ситуацию вроде не меняет, завтра попробую вместо Range(«N44»)… указать конкретные цифры в самом макросе.
Листов около сотни и вручную указывать при печати количество экземпляров каждого как-то муторно получается.

UPD. А вот и сам файл.

К сообщению приложен файл:

6883324.xlsm
(32.7 Kb)

Сообщение отредактировал Garik007Четверг, 18.05.2017, 21:38

 

Ответить

gling

Дата: Четверг, 18.05.2017, 21:24 |
Сообщение № 4

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

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

Сообщений: 2449


Репутация:

652

±

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


2010

Здравствуйте.

А где его взять этот родительский объект?

Это имя листа на котором записаны данные в этих ячейках. выглядеть должно так [vba]

Код

=Sheets(«ЗесьИмяЛиста»).Range(«N48»).Value

[/vba]или через With. А лучше конечно в файле пробовать и показывать, в файле понятнее.


ЯД-41001506838083

 

Ответить

KuklP

Дата: Пятница, 19.05.2017, 06:43 |
Сообщение № 5

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

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

Сообщений: 2369


Репутация:

486

±

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


2003-2010

Ну так у Вас там ноль в третьем кол-ве. Попробуйте так, в модуль листа «список»:
[vba]

Код

Sub печать()
    Dim i&
    With Me
        For i = 2 To 6
        If .Cells(i, 14).Value > 0 Then _
            Sheets(.Cells(i, 11).Value).PrintOut Copies:=.Cells(i, 14)
        Next
    End With
End Sub

[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Garik007

Дата: Пятница, 19.05.2017, 08:54 |
Сообщение № 6

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

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

Сообщений: 102


Репутация:

0

±

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


Excel 2013, 2016

KuklP, ноль мне кажется не основная причина, менял и в строке формул все на значения больше ноля, и принудительно в макросе везде прописывал количество копий больше ноля, но больше двух листов за раз не печатает.
Если добавить Вашу формулу в модуль листа выдает ошибку «Invalid use of Me keyword».

 

Ответить

KuklP

Дата: Пятница, 19.05.2017, 09:00 |
Сообщение № 7

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

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

Сообщений: 2369


Репутация:

486

±

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


2003-2010

Если добавить Вашу формулу в модуль листа выдает ошибку «Invalid use of Me keyword».

Чушь собачья. Значит Вы не в модуль листа его сунули, а в отдельный модуль. См. скрин.

Макрос отработал до конца, считайте к-во документов в столбце и в диспетчере печати.

К сообщению приложен файл:

7199723.gif
(91.4 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Сообщение отредактировал KuklPПятница, 19.05.2017, 09:07

 

Ответить

Garik007

Дата: Пятница, 19.05.2017, 09:26 |
Сообщение № 8

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

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

Сообщений: 102


Репутация:

0

±

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


Excel 2013, 2016

KuklP, да все работает, спасибо большое, смутило слово модуль в Вашем ответе, поэтому и добавил не на лист, а создал модуль в книге, поэтому и вылезала ошибка, не силен еще в ВБА.

 

Ответить

KuklP

Дата: Пятница, 19.05.2017, 11:15 |
Сообщение № 9

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

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

Сообщений: 2369


Репутация:

486

±

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


2003-2010


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

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


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

Код макроса


  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

​Смотрите также​case «qwer»: .Worksheets(s).PrintOut​ листов — все​ эту строку​ Trim$(src.Cells(i, 4)) dst.Cells(3,​Потом следующие 16​ ладно, главное чтоб​ Форма по 213н!AR13​Нужно вплотную заняться​ про With https://msdn.microsoft.com/ru-ru….%3Dtrue​: Доброго времени суток!​Olga_L​ выбирай до умопомрачения.​ принтер и печатал​Естественно можно использовать другие​ ActiveWorkbook.Worksheets(NameListDanye)​ заказа с учетом​Текстовый редактор Word обладает​ Copies:=2​ показали бы? В​Selection.PrintOut Copies:=1, Collate:=True,​ 4) = sUser​ уведомлений по г.​ сами помнили…​ и сразу печатью.​ изучением макросов, чтоб​Кстати, ThisWorkbook здесь​ Столкнулся со следующей​: Мне выдает ошибку.​С уважением, Александр.​ указанный лист. т.е​ названия листов, только​Set DiapazS =​ даты его составления.​ определенной функциональностью, которой​case «tyui»: .Worksheets(s).PrintOut​

Подготовка слияния данных для серийной печати рассылок в Excel

​ Вашем конкретном случае​ IgnorePrintAreas:=False​ ‘ Заполнить Ф.И.О.​ Зиме и т.д.​В остальном должно​Ну или даже​ другим мозг не​ вообще не нужен.​ задачей:​ Run-time error 438.​Igor67​ кнопка на котром​ не забывайте соответственно​ ListSerii.Range(AdresRekvizitov)​ Допустим на строки​ нет в Excel.​ Copies:=3​ можно было вообще​taxi_driver​ dst.Cells(5, 4) =​

  1. ​ и также выводились​ работать, если код​ просто цикл от​ выносить))))​ А вот ActiveSheet​Необходим (для удобства)​ Пишет что «обьект​: С жиру не​ прописан этот макрос​ отредактировать значения в​Set DiapazD =​ реализации дается 2​
  2. ​ Например, функция слияния​case else: .Worksheets(s).PrintOut​ обойтись без файла-примера,​: разобрался, почему то​ sPodr ‘ Заполнить​ на печать.​ в нужном месте​ 3 до 468,​ЕЩЕ РАЗ СПАСИБО!!!​ нужен​ макрос печати. Но​ не поддердивает это​ бесимся, условие классное,​ на одном листе,​

​ строках для этих​ ListDannye.Range(AdresDannye)​ недели, тогда вводим​ документов для серийной​ Copies:=1​

Создание Серийной Таблицы с шаблоном для рассылки

​ указав в вопросе:​ именно это было​ отдел. ‘ Очистить​С помощью ИНДЕКС​ и нигде раскладка​ подменяя число в​Timus​КодSub nameu8()​ не простой, а​ свойство или метод».​ все неизвестно лист​ а печатать нужно​ переменных:​For Stroki =​ простую формулу: =B3+14.​ печати адресов писем​end select​

​ печатать только листы,​ лишним​ табличную часть карточки​ и ПОИСКПОЗ как-то​ не перепутана. Ну​ ссылке =Бюджет!L3​: Добрый день​

создать Серийную Таблицу.

​DisplayDrawingObjects = xlHide​ с выделением области​JayBhagavan​ для печати, принтер.​ другой лист.​NameListSerii = «Серии»​ 1 To DiapazD.Rows.Count​На отдельном листе создадим​ на конвертах при​Hugo​ у которых в​IgnorePrintAreas:=False​ dst.Range(dst.Cells(10, 1), dst.Cells(25,​ не получается делать​ и если кнопка​

Подготовка Таблицы Данных с реквизитами для рассылок

​Например такой код​Помогите пожалуйста. Нужно​With ActiveSheet​ печати, принудительной горизонтальной​: Подсказка была, а​ предлагили в макрорекордере​Igor67​NameListDanye = «Данные»​Stolbec = 1​ Таблицу Данных, которая​

создадим Таблицу Данных.

​ массовой рассылке. Задумайтесь,​: Или так -​ ячейке, например, А1​расскажите хоть почему​ 8)).ClearContents ‘ Заполнить​ выборку из двух​ та​в модуль листа:​ чтобы при нажатии​.PageSetup.Orientation = xlLandscape​ ориентации и печати​ ошибку в коде​ прописать последовательность действий​: Ну и запиши​А также:​For Each Rekvizit​ будет содержать все​ на сколько был-бы​ меньше букв:​ значение > 0.​RAN​ первую строку: m​

​ таблиц (одно только​Damon2013​Sub tt() Dim​ на кнопку она​.Range(«A1:O23»).PrintOut​ выделенного диапазона на​ подправить можете самостоятельно,​ — не подошло.​ макрорекодером последовательность действий​AdresDannye = «A2:D20″​ In DiapazS​ переменные значения, подставляемые​ практически применим этот​Dim n As​GIG_ant​: По той же​

​ = 1: dst.Cells(10,​ поле «Территория (БП)»).​: Подскажите, а как​ i& For i​ закрашивалась определенным цветом​.PageSetup.FitToPagesWide = 1​ 1 лист.​ т.к.ЦитатаOlga_L написал: Я​ Что делать дальше​ с переходом на​AdresRekvizitov = «B3,​Set Yacheyki =​ в соответственные места​ инструмент в Excel,​ Byte​: Попробуйте такую продцедуру:​ причине, по которой​ 1) = m:​

​Hugo121​

Слияние данных обеих таблиц в Excel с помощью макроса

​ реализовать второй вариант:​ = 3 To​ и отправляла на​.PageSetup.FitToPagesTall = 1​Простой макрос печати​ не прошу решить​ ? Ставь задачу,​ заданный лист, установкой​ B4, B6, B7″​ DiapazD.Cells(Stroki, Stolbec)​

​ Серийной Таблицы. На​
​ чтобы можно было​Select Case s​
​Sub MyPrint()​ цыпочку в левом​
​ m = m​: Без примеров файлов​
​ выводить первые 10​ 468 With Range("AR13")​
​ печать определенное количество​End With​
​ диапазона есть:​ задачу за меня​
​ спрашивай что не​ области печати, выбором​
​В том случаи если​Stolbec = Stolbec​
​ следующем рисунке изображен​ печатать: счета фактур,​
​Case "qwer": n​Dim sh As​
​ верхнем углу зовут​ + 1 '​
​ можно только гадать​ уведомлений на печать,​
​ .NumberFormat = "General"​ копий заданного диапазона​
​DisplayDrawingObjects = xlAll​
​Sub Name()​
​Не получится -​
​ получилось.​
​ принтера и возвратом​ изменились размеры или​
​ + 1​
​ простой пример Таблицы​ отчеты, анкеты, бланки​
​ = 2​ Worksheet​
​ Игорь. (Обрезание треба)​ Компьютер или ноутбук:​
​ - может помогут​ потом вывод сообщения​
​ .Value = "=Бюджет!L"​ определенного листа.​
​End Sub​
​With ThisWorkbook​ сообщите.​
​dl​ на исходный лист.​
​ адреса диапазонов таблиц​Rekvizit.Formula = Yacheyki.Value​
​ Данных из серийными​
​ заказов, коммерческие предложения​
​Case "tyui": n​
​For Each sh​
​Grego​ If Trim$(src.Cells(i, 9))​
​ специальнонаписанные (или готовые)​ "Продолжить печать след.​
​ & i End​Я сделал следующим​
​3. Крайне нежелательно​
Код VBA-макроса.

​.DisplayDrawingObjects = xlHide​Olga_L​

  1. ​: Например распечатать все​Лузер​ на этих листах​Next Rekvizit​ переменными значениям:​ и др. В​ = 3​ In ThisWorkbook.Worksheets​: Добрый День, Уважаемые​ Like «Компьютер» Then​ UDF, или вообще​ 10 уведомлений»? Если​ With DoEvents: DoEvents:​ образом, но чтото​
  2. ​ называть что-либо (макросы,​.Worksheets(1).Range(«A1:O23»).PrintOut​: Я себе не​ файлы xls в​: Да но так​ просто отредактируйте значение​ListSerii.PrintOut​При создании такой таблицы​ принципе с помощью​Case Else: n​If Not sh.[A1].Value​ Дамы и Господа!​ dst.Cells(10, 2) =​ всё делать макросом.​ ок, то начинаем​ DoEvents Me.PrintOut Copies:=1​

​ не работает:​ функции, объекты, переменные,​.DisplayDrawingObjects = xlAll​ так даный макрос​ директории.​ он просто сразу​ в соответственных переменных.​Next Stroki​ мы должны придерживаться​

​ программы Word мы​ = 1​ = 0 Then​

  1. ​Необходимо сделать макрос​ «Системный блок» ElseIf​ Это как я​ печать с 11​ DoEvents: DoEvents: DoEvents​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub CommandButton1_Click()​
  2. ​ …) именами, зарезервированными​ ‘xlPlaceholders​ представляла. В этом​Принтер и номер​ выводит на печать​Обратите внимание, что при​

​MsgBox («Отравлено на​ базового правила –​ можем применять инструмент​End Select​ sh.PrintOut Copies:=1​ который будет печатать​ Trim$(src.Cells(i, 9)) Like​ понял задачу.​ и по такому​ Next End SubDoEvents​If CommandButton1.BackColor =​ в Excel или​End With​

​ коде для меня​
​ печатаемой страницы выбрать​ тот лист на​

​ указании несмежного диапазона​ печать» & _​ каждая строка содержит​ слияния документов так,​.Worksheets(s).PrintOut Copies:=n​Next sh​ документы из конкретной​ «Ноутбук» Then dst.Cells(10,​

​Manqix​
​ принципу до конца​ для того, чтоб​

​ vbBlack Then​ в VBA. У​

​End Sub​ почти ничего не​ в коде с​ котром был выполнен​ адреса между ячейками​CStr(Stroki — 1)​ определенную группу связанных​ чтобы импортировать данные​Guest​End Sub​

​ папки, и конкретные​ 2) = «Ноутбук»​: Здравствуйте! Был бы​ столбца (выводить по​ пока код работает​CommandButton1.BackColor = vbGreen​

​ Вас макрос называется​
​Что нужно добавить​

​ понятно. Ладно.. и​

​ помощью диалогов.​
​ макрос, а мне​ мы разделяем запятыми.​

​ & » бланков»)​ между собой значений.​ из Excel. Но​: Sub Печать()​Проверяется значение ячейки​ листы в каждом​

​ Else Stop ‘​ признателен в помощи​ 10)​ можно было ещё​CommandButton1.ForeColor = vbBlack​ «name». Не нужно​ для горизонтальной ориентации​ на том спасибо.​Olga_L​ нужно чтобы можно​ Также количество ячеек​On Error GoTo​ Например, имя и​ это весьма сложное​Dim sh As​ А1 на всех​ Excel документе из​ В поле «Тип​ создания макроса. Ввиду​Hugo121​ что-то на компе​

​CommandButton1.Caption = «Договор»​ так делать. Назовите​ и печати выделенного​ Будем разбираться​: Здравствуйте, хочу сделать​ было еще выбрать​ в каждой строке​

​ 0​

​ фамилия одного и​ и не всегда​ Worksheet​

​ листах книги, если​

​ этой папки (документы​ техники» недопустимое значение​ того что никогда​: Не проверял печать,​ делать.​Worksheets(«Договор).Range(«A27:AC199»).PrintOut Copies:=2​

Процесс слияния данных и серийной печати рассылок из Excel

​ как-нибудь иначе. Хотя​ диапазона на 1​JayBhagavan​ печать нескольких листов​ принтер и печатал​ Таблицы Данных соответствует​End Sub​ того же получателя​ удобно реализуемое решение.​For Each sh​ не равно нулю​

​ все типовые).​ End If dst.Cells(10,​ не сталкивался не​ но запрос работает:​Добавлено через 1 минуту​GoTo EndSub​ бы «name_»​ лист?​: Olga_L, простите, что​ одной кнопкой, оптом,​ указанный лист. т.е​

​ количеству поданных адресов​В коде применяются 2​ должны находиться в​ В данном примере​ In ThisWorkbook.Worksheets​ то печатаем.​Если есть у​ 3) = src.Cells(i,​ знаю как это​For i =​

Информация о количестве.

​Принудительно ставить формат​End If​BlackRaven​Заранее большое человеческое​ не угодил.​ так саказать. Но​ кнопка на котром​

Готов бланк.

​ ячеек для несмежного​ цикла:​ одной строке. Наш​ мы с помощью​If Not sh.[A1].Value​evgeny_t​

exceltable.com

Макрос печати

​ кого-то готовое решение,​​ 2) ‘ Конфигурация​ делать, однако выполнить​ a + 2​

​ ячейке вроде как​​EndSub:​: _Boroda_, про имя​

​ спасибо! )))​​Скрытый текст Sub jjjj()​

​ как сделать не​​ прописан этот макрос​ диапазона в Серийной​For Stroki = 1​ макрос будет по​ VBA-макроса создадим свой​ = 0 Then​: Прошу прощения за​ просьба поделиться! Спасибо!​ k = 11​ задачу надо…​ To b If​ не нужно, но​End Sub​ — я знаю,​P.S. с ориентацией​

​ var_val = Worksheets(«Лист1»).[H3].Value​​ знаю. При этом​ на одном листе,​ Таблице. Все данные​ To DiapazD.Rows.Count –​ строкам считывать эту​ альтернативный инструмент слияния​ sh.PrintOut Copies:=3​

​ неграмотный вопрос)​​KoGG​ For j =​Суть задания состоит​ i Mod 10​ у меня почему-то​*где Договор это​ спасибо (просто тут​ справился (вроде). Добавил​ If var_val Так​ есть условие: сколько​ а печатать нужно​ собираются и вводятся​ Первый проходить по​ таблицу и подставлять​ в Excel. И​Next sh​PS у меня​: Готового решения не​ 18 To 23​
​ в том, чтобы​ = 0 Then​ глюк и нужно!​
​ название кнопки и​ обозначил как Name.​
​ следующую строку ниже​

​ понятней?​ листов печатать -​ другой лист.{/post}{/quote}Принтер заранее​ по очереди. Например,​ всем строкам Таблицы​ взятые значения с​

​ продемонстрируем как использовать​​End Sub​ в книге белее​ было, а теперь​

​ If src.Cells(i, j)​​ из имеющейся базы​ ans = MsgBox(«Продолжить​Damon2013​ Листа в книге​ При запуске Вашего​ .DisplayDrawingObjects = xlHide:​Михаил Лебедев​ зависит от значения​ известен или его​ в ячейку Серии!B3​ Данных. Количество проходов​ диапазона каждой строки​ его для серийной​Как вот изменить​
​ 100 листов..​

​ есть:​​ <> Empty Then​ в Excel’e, которая​ печать след. 10​: Подскажите, пожалуйста, почему​vikttur​ макроса — да,​

​Код.ActiveSheet.PageSetup.Orientation = xlLandscape​​: Если яч. H3=3,​ в конкретной ячейке.​ надо выбирать перед​ по очереди будут​ зависит от значения​ в соответственные места​

​ печати документов при​​ данный макрос? печать​Юрий М​
​Sub Печать_заданных_листов_файлов_Excel_из_папки() Dim​ dst.Cells(k, 2) =​ располагается на 3-х​ уведомлений?», vbYesNo) If​ выдает ошибку?​:​

​ печатает выделенный фрагмент,​​Pelena​ то надо будет​ Подскажите пожалуйста как​ печатью? Равно как​ заполняться все значения​ в переменной Stroki.​ Серийной Таблицы. Так​ подготовке их к​

​ последний страницы 1​​: Про главное опять​ MyPath$, MyFileName$, ShName,​
​ src.Cells(i, j) k​ листах:​ ans = 7​
​—————————​Worksheets(«Договор)​ но на 4-х​

​: Для Макрорекодер записал​​ напечатать листы с​ в VB это​ и лист?​ из столбца Данные!A:A,​
​ А ее значение​ будет реализована многоразовая​ массовой рассылке по​ копии.я не силен​ умолчали… Смотрите вариант​
​ i% MyPath =​ = k +​а)​
​ Then Exit Sub​

​Microsoft Visual Basic​​- нет закрывающих​ листах. А у​ActiveSheet.PageSetup.FitToPagesWide = 1​ 1_4 по 17_20,​ реализовать. Знание VB​Если да, то​ а в ячейку​ получено путем определения​ печать одного и​ адресам клиентов получателей.​ и не могу​

​ от GIG_ant’а​​ «C:Temp3» ‘ Папка,​ 1 End If​1-ый лист база пк​
​ With Range(«AR13») .NumberFormat​—————————​ кавычек​ меня задача впихнуть​

planetaexcel.ru

Макрос печати нескольких листов сразу

​ActiveSheet.PageSetup.FitToPagesTall = 1​​ т.е. ВСЕ листы?​ на уровне «записать»​ совет Igor67 Вам​ Серии!B3 – попадут​ количества заполненных строк​ того же шаблона​Чтобы использовать в Excel​ сам разобраться.​evgeny_t​ из которой печатаем​ Next ‘ Блок​ или ноутбуков, вместе​ = «General» .Value​Compile error:​Строки лишние:​ невпихуемое (эти 4​BlackRaven​

​Ведь 3 <​​ или «копировать -​
​ в руки​ значения из столбца​ в Таблице Данных.​ с разными реквизитами.​ преимущества серийной печати​Guest​: Большое спасибо!!! Только​ ShName = Array(«Лист1»,​ питания If src.Cells(i,​
​ их характеристиками, инв.​ = «=Бюджет!L» &​​Invalid use of​GoTo EndSub, EndSub:​ листа на 1).​: Pelena, СПАСИБО огромное!​ 20 ?​ вставить». Потому и​
​Если нет, то​ Данные!B:B и т.д.​ Адрес этой таблицы​
​Так же следует помнить​ и слияния данных,​: Пардон!​

​ что попробовал, всё​​ «Лист2») ‘ Набор​ 24) <> Empty​ номерами, и прочими​ i End With​ Me keyword​(при необходимости лучше​ Иными словами действия:​ Вроде все работает.​Я хочу сказать,​ не получаеться ничего.​ вызывайте окно печати​На этапе тестирования макроса​ находится в переменной​ о том, то​ в первую очередь​Ребят , что​ работает!! Но есть​ имен листов к​ Then dst.Cells(k, 2)​ данными;​ DoEvents: DoEvents: DoEvents​—————————​

​Exit Sub​​ «Выделить диапазон-настройка печати-альбомная​Итого получилось так:​ что по Вашим​ikki​Application.Dialogs(xlDialogPrint).Show​ нет необходимости рисковать​

​ DiapazDannye.​​ Таблица Данных должна​ необходимо создать таблицу​ нужно добавить во​ нюанс, который хотелось​ распечатке MyFileName =​ = «Бл. питания​б)​ ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1,​Ругается на Me.PrintOut​)​ ориентация-напечатать выделенный фрагмент-вписать​Sub name()​ условиям, всегда надо​: нет, не поэтому.​Можно сразу некоторые​ ошибочной печатью документов​For Each Rekvizit In​ быть полностью заполнена.​ с определенной структурой​ второй макрос, чтобы​ бы учесть…​ Dir(MyPath & «*.xls*»)​ » & src.Cells(i,​2-ой лист база доп​

​ Copies:=1 DoEvents: DoEvents:​​ Copies:=1​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub CommandButton1_Click()​ лист на 1​With ThisWorkbook​ печатать все листы.​

​скорее — потому,​​ аргументы подставить, подробнее​ и тратит офисные​ DiapazS – Второй​ Если будет пустая​ и контролем ввода​ листы , которые​;)​Дело в том,​ On Error Resume​

​ 28) & «​​ оборудования, таких как​ DoEvents End If​Hugo121​With CommandButton1​ страницу» должны проводиться​DisplayDrawingObjects = xlHide​JayBhagavan​ что над предыдущими​

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

​ Next ‘ Если​​ Вт» k =​ принтеры и мфу,​ Next​: — это читали?​If .BackColor =​
​ в автоматическом режиме…​ActiveSheet.PageSetup.Orientation = xlLandscape​
​: Михаил Лебедев, срабатывает​ полученными готовыми решениями​ F1 по ключевым​ лишь поменять строку​

​ первого. Он отвечает​​ опущено значение. А​ при заполнении. А​ условию(в нашем случае,​

​ макроса на печать​​ в файле нет​ k + 1​ ксероксы и мониторы,​Даже можно чуть​Специально болдом выделил…​ vbBlack Then​sboy​Worksheets(6).Range(«A1:O23»).PrintOut​

​ приоритетное правило. Как​​ Ваших задач Вы​ словам Built-In Dialog​ кода:​ за поочередное заполнение​ если будет пустая​ после подготовки материалов,​ если ячейка=0), выводились​ отправляется каждый лист​ заданного листа, то​ End If ‘​ а также ИБП​ короче, без переменной​ Нужно было красным​.BackColor = vbGreen​:​ActiveSheet.PageSetup.FitToPagesWide = 1​ понял, правила взаимоисключающие.​ не думали, и​ Box Argument Lists​ListSerii.PrintOut​ соответственных ячеек на​ целая строка, тогда​ мы с помощью​ бы в окно​ по отдельности, у​ игнорируем и продолжаем​ Сетефой фильтр If​

​ (и каждого оборудования​​If MsgBox(«Продолжить печать​
​ болдом и 20м​.ForeColor = vbBlack​Цитата​ActiveSheet.PageSetup.FitToPagesTall = 1​Михаил Лебедев​
​ учиться у Вас​Route​на временную строку которая​ листе где находится​ будет прервана серия​ средств VBA напишем​ сообщений. Типа листы​ меня лазерный принтер​ работать Do Until​ Trim$(src.Cells(i, 27)) Like​ может быть свой​
​ след. 10 уведомлений?»,​

​ кеглем​​.Caption = «Договор»​
​sboy, 29.05.2018 в​DisplayDrawingObjects = xlAll​
​: , я вот​ либо времени нет,​: Какой принтера не​ включит режим предварительного​ Серийная Таблица. А​ печати. Положение Таблицы​

​ свой макрос, который​​ такие то (перечень),​ и каждый лист​
​ MyFileName = «»​ «да» Then dst.Cells(k,​

​ инвентарный номер, так​

planetaexcel.ru

Макрос печати (Макросы/Sub)

​ vbYesNo) = 7​​Damon2013​Worksheets(«Договор»).Range(«A27:AC199»).PrintOut Copies:=2​ 09:14, в сообщении​
​ ‘xlPlaceholders​ об этом и​ либо, что скорее,​ известен, имя печатаемой​ просмотра:​ данные берет со​ Данных не обязательно​ будет выполнять серийную​
​ не соответствуют затребованому​ он печатает как​

​ If Left$(MyFileName, 2)​
​ 1) = m​
​ и у всей​
​ Then Exit Sub​
​: Спасибо большое!!!​End If​
​ № 4 ()​
​End With​

​ хочу сказать. Ну,​ желания.​ странице известно.​ListSerii.PrintPreview​ строк Таблицы Данных.​
​ должно начинаться с​ печать документов. Данные​
​ условию или условиям,и​ новый документ, то​ <> «~$» Then​ m = m​
​ оргтехники принадлежащей одному​

​Damon2013​​А скажите, пожалуйста,​
​End With​
​ Вы печатаете, а​

​End Sub​​ что я, например,​Знание VB на уровне​
​Igor67​
​В таком режиме макрос​
​ Количество циклов определяется​
​ ячейки A1. Ее​
​ на основе которых​
​ не выводятся на​
​ есть очень много​
​ ' Исключаем временные​
​ + 1 dst.Cells(k,​ человеку может быть​
​: А если сделать​
​ как можно настроить​

​End Sub​ потом устанавливаете размеры​Данный макрос на​ не так понял.​ «записать»​: Если принтер не​ Excel не будет​
​ значением переменной Yacheyki.​ адрес расположения укажем​ будет реализована печать​ печать.​ времени тратится..​ файлы Excel Workbooks.Open​ 2) = «Сетевой​

​ один инвентарный номер.​​ без инпутбокса? Выводить​ печать, чтобы выводилось​
​После печати ведь​BlackRaven​
​ определенном листе выделяет​
​ Задача, на мой​
​приводит к примерно​
​ известен, давите на​
​ направлять данные на​
​ А ее значение​
​ в VBA-коде макроса.​
​ тиража, должны быть​
​И еще ,​Обычно я выделяю​
​ FileName:=MyPath & MyFileName,​

​ фильтр» k =​​ У 2-x одинаковых​ первые 10 уведомлений​ по 10 уведомлений?​ нужно обратно перекрасить?​: sboy, да, читал​ необходимый диапазон и​ взгляд, поставлена не​ такому результату: Sub​ значок печати и​ принтер, а просто​
​ получено путем определения​​Также важно учитывать тот​​ разделены на 2​ как в этот​ нужные листы вручную​ UpdateLinks:=0, ReadOnly:=True For​ k + 1​ видов техники не​ на печать, потом​Т.к. их объем​Damon2013​ Ваше замечание по​ выводит его на​ совсем корректно ☺​ Макрос1() Sheets(Array(«1-4», «5-8»,​
​ будет печатать на​
​ выведет документ на​
​ количества ячеек в​ факт, что листы​ части:​ же макрос добавлять​ (их в книге​ i = 0​ End If ‘​ может быть одного​ сообщение, если ок,​ большой (порядка 466),​: Здравствуйте!​
​ этому поводу. Но​ печать в альбомной​Михаил Лебедев​ «9-12»)).Select Sheets(«1-4»).Activate ActiveWindow.SelectedSheets.PrintOut​
​ принтере установленном по​
​ предварительный просмотр печати.​
​ исходной строке.​
​ обеих таблиц должны​
​Таблица с постоянными (не​
​ допусловия для проверки.​
​ больше 100) и​
​ To UBound(ShName) ActiveWorkbook.Sheets(ShName(i)).PrintOut​
​ Комплект (мышь, клавиатура)​
​ инвентарника, прим. 2​
​ то продолжаем с​ то для проверки​Очень прошу помощи​ Ваш код также​ ориентации на одном​: Если логика от​ Copies:=1, Collate:=True, IgnorePrintAreas:=False​ умолчанию, а чтобы​Когда уже создадите и​Когда макрос Excel пройдет​ находиться в одной​

​ изменяющимися) значениями для​​ например , больше​ отправляю на печать​ Next i ActiveWorkbook.Close​ If src.Cells(i, 28)​ принтера с одним​ 11 по счету​ удобнее вывести первые​ в написании макроса,​ печатает на 4-х​ листе.​ именно такая, как​ End Sub​ страница не поплыла​ заполните все таблицы​ по всем циклам,​ рабочей книге Excel.​ информации, которая будет​ чем одна ,​

​ командой «файл -​​ 0 End If​​ <> Empty Then​​ инвентарным номером)​ и опять 10​ 10, потом через​ т.к. новичок. Есть​ листах)))​

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

​ выполнять роль шаблона​​ ко-во проверяемых ячеек​ печать», в таком​ MyFileName = Dir​ dst.Cells(k, 1) =​в)​ и т.д. до​

​ определенный интервал или​​ форма (лист «Форма​_Boroda_​ зрения правильности и​ вот такой еще​ подать до рабочего​ драйверах, в Параметрах​ запустить свой макрос​ окно сообщения (MsgBox)​ макроса не важно​ при многоразовой печати.​

​ и , плюс​​ случае принтер печатает​ Loop End Sub​

​ m m =​​3-й лист это собственно​ конца​ по действию, выводить​ по 213н»), которую​: Да, конечно, еще​ т.д. и т.п.​
​ вариант (правда, в​​ макроса.​ страницы установите -​ для серийной печати.​ о количестве напечатанных​ будут ли в​ Например: суть предложения,​ количество печатаемых столбцов​​ листы без остановки.​​Grego​

​ m + 1​​ сама карточка сотрудника.​For i =​ следующие 10 уведомлений​ необходимо заполнить данными​ нужно поменять местами.​ он правильно прописан,​ отличие от вар.​
​но в Вашем​ Разместить не более​

​ Нажимаете комбинацию клавиш​
​ документов. То есть​
​ этой книге находиться​
​ бланк заказа, отчет,​
​ таблицы (если не​
​Так вот, корректный​
​:​
​ dst.Cells(k, 2) =​
​была возможность распечатывать​
​ 3 To 468​ и так до​
​ из таблицы (лист​

​ К сожалению проверить​ или кой чего​ от с elseif,​ файле даже таких​
​ 1 стр в​

excelworld.ru

Макрос для печати (При нажатии определенных кнопок печать разных листов)

​ (ALT+F8) из списка​​ сколько было выполнено​
​ другие листы. Так​ реквизиты фактур Вашей​ подлежащие печати столбцы​ вопрос будет наверное​KoGG​ src.Cells(i, 28) k​ карточки определенных людей,​ If i Mod​
​ конца.​ «Бюджет»).​ наглядно сейчас не​
​ мне на руки​
​ мой печатает листы​ попыток нет.​
​ ширину и 1​
​ в появившемся окне​
​ непрерывных циклов в​
​ же на данном​
​ фирмы и т.п.​
​ не скрыты, то​
​ таков: как написать​
​, Спасибо! Всё работает!​

​ = k +​ т.е. выбрав определенного​ 10 = 0​

​ActiveWindow.SelectedSheets.PrintOut From:=1, To:=10,​​Заполнить на форме​​ могу, поэтому только​​ нужно сделать?​ в обратном порядке​
​Olga_L​​ в высоту.​​ выбираем имя макроса​​ процессе выполнения кода.​​ этапе для макроса​
​ В данном примере​
​ также выпадает сообщение​
​ макрос, чтобы выделить​ Очень благодарен!​
​ 1 End If​
​ человека, затем при​
​ Then ans =​
​ Copies:=1​
​ нужно: Финансовый орган​
​ теоретически всё​
​sboy​

​ ☺): Sub procPrint()​: Уважаеммый Ikki, возможно​

excelworld.ru

Макрос в Excel для последовательного заполнения данными и вывод их на печать

​Может так поможет.​​ «PechatSerii» и нажимаем​
​В макросе используются еще​ не играют особой​ эта таблица будет​ в окне. Критерий​ листы с условием,​mark013​ ‘ Доп. оборудование​ нажатии на «волшебную»​
​ MsgBox(«Продолжить печать след.​Hugo121​ — соответсвует ФО_Адм​BlackRaven​
​: Вы печатаете, а​ var_val = Worksheets(«Лист1»).[H3].Value​ для Вас и​Route​ на кнопку «Выполнить».​
​ 2 переменные с​ роли названия листов.​ называться «Серийная Таблица».​ для определения непечатаемых​ что если ячейка​:​ l = 3​ кнопку происходила печать​
​ 10 уведомлений?», vbYesNo)​: Ну например где-то​ МО в таблице.​: _Boroda_, дак проверить​ потом устанавливаете размеры​ Select Case var_val​ «рукой подать», а​: Да просто хотелось​Циклы инструкций кода сразу​
​ адресами диапазонов ячеек:​ После переименования названий​Таблица в которой все​ столбцов, например в​ E46 отлична от​KoGG​ Do While dop.Cells(l,​ карточки с оборудованием​ If ans =​ в свободные ячейки​Наименование бюджета -​ не вопрос (сам​Примерно так надо​ Case Is >​ для меня привязать​
​ бы чтобы можно​ проходят по всем​

​DiapazS – содержит адрес​​ листов, просто следует​
​ значения уникальны и​
​ строке нумерации столбцов,​
​ нуля, то лист​, подскажите.​
​ 3) <> Empty​
​ приписанному этому сотруднику.​
​ 7 Then Exit​ пишите цветом фона​ название бюджет, ОКТМО,​ сразу проверяю), вот​ поправить​ 16: Sheets(«17-20»).PrintOut Copies:=1,​
​ записанный макрос «быстрой​ было выбирать на​ строкам Таблицы Данных​ на несмежный диапазон​ указать их имена​
​ подаются для заполнения​​ стоит русская буква​
​ выделяется, если нет​Как в Вашем​ If Trim$(dop.Cells(l, 3))​Так же как​ Sub With Range(«AR13″)​ два числа, в​ по сводному реестру.​ только я еще​Sub name()​ Collate:=True, IgnorePrintAreas:=False Case​ печати» к условию​ каком печатать. у​ и поочередно вводят​ ячеек для Серийной​ в коде макроса.​ реквизитов при многоразовой​
​ х.​
​ — то нет..​ коде печатать «Лист​ Like sUser Then​ и в примере​ .NumberFormat = «General»​

​ коде ссылаетесь на​​ Остальные данные заполнять​ пытаюсь понять суть​
​ThisWorkbook.DisplayDrawingObjects = xlHide​
​ Is > 12:​
​ пока целая проблема,​
​ нас их аж​
​ собранные значения из​ Таблицы, в которую​
​​
​ печати. Эти значения​Благодарю за ответ!​

​Еще раз огромное​​ 2″ дважды?​
​ If Trim$(dop.Cells(l, 4))​ на фото, в​ .Value = «=Бюджет!L»​ них:​

​ не нужно.​​ написания макросов и​
​With ActiveSheet.PageSetup​ Sheets(«13-16»).PrintOut Copies:=1, Collate:=True,​ на решение которой​ 4 штуки…​
​ ячеек строк в​ будут вводиться переменные​Заполнение серийной таблицы значениями,​ будут вставлены в​Guest​ спасибо!!​Hugo121​ Like sPodr Then​ 1-м «№ п/п»​ & i End​
​For i =​С помощью функции​

​ учусь на пробах​​.FitToPagesWide = 1​ IgnorePrintAreas:=False Case Is​ было потрачено целое​Route​ соответственные ячейки Серийной​ значения.​
​ собранными в Таблице​ соответственные места Серийной​
​: (:​evgeny_t​: Пока​ dst.Cells(k, 1) =​ должно писаться ноутбук​ With DoEvents: DoEvents:​ [A1] To [B1]​ ВПР заполнила наименование​ и ошибках. Что​.FitToPagesTall = 1​
​ > 8: Sheets(«9-12»).PrintOut​ утро. Поверьте, могла​: Впринцепи операция Application.Dialogs(xlDialogPrint).Show​

​ Таблицы. После заполнения​​DiapazD – содержит адрес​ Данных выполнить за​
​ Таблицы. Например: адреса​Hugo​: прошу прощения)) E46​KoGG​ m m =​ это или компьютер,​ DoEvents ActiveWindow.SelectedSheets.PrintOut From:=1,​Это так чтоб​ финансового органа. С​ с чем поменять​.Orientation = xlLandscape​ Copies:=1, Collate:=True, IgnorePrintAreas:=False​ бы решить сама,​ открывает окно принтеров,​ каждого комплекта данных​ на смежный диапазон​ нас программа VBA-макроса.​ клиентов, имена и​: До «ещё»:​ ))​где-то отдыхает -​ m + 1​

​ далее перечисляется комплектующие​​ To:=1, Copies:=1 DoEvents:​ попроще, а если​
​ помощью функций ИНДЕКС​ местами подскажете?​End With​ Case Is >​ не стала бы​
​ но как сделать,​ выполняется печать готового​ ячеек для Таблицы​ Для этого откройте​ фамилии получателей и​Sub Печать()​GIG_ant​

​ самое простое записать​​ dst.Cells(k, 2) =​ компьютера(у ноутбука не​ DoEvents: DoEvents End​ хочется всё усложнить​ и ПОИСКПОЗ заполнила​sboy​Range(«A1:O23»).PrintOut​ 4: Sheets(«5-8»).PrintOut Copies:=1,​ обращаться на форум.​ чтобы печатся указанный​ текущего документа.​ Данных из которой​ редактор Visual Basic​

​ т.д. В данном​​Dim sh As​: Вот такой вариант:​
​ имя этого листа​ dop.Cells(l, 5) &​ пишется мощность БП);​ If Nextи ещё​ — можно конечно​ наименование бюджета, ОКТМО​: проверил, сжимает до​ThisWorkbook.DisplayDrawingObjects = xlAll​ Collate:=True, IgnorePrintAreas:=False Case​ А попыток в​ определенный лист не​Данный процесс повторяется ровно​ будут браться переменные​ (ALT+F11) и создайте​ примере вторая таблица​ Worksheet​Sub MyPrint()​ в массив дважды.​ » » &​
​Далее перечисляется техника​ подскажите, мы один​
​ цикл по 10​ и по сводному​ 1 листа нормально​ ‘xlPlaceholders​

​ Is > 0:​​ моем файле Вы​ разберусь никак…​ столько раз сколько​ значения для заполнения.​ модуль: «Insert»-«Module», чтобы​ будет навиваться «Таблица​For Each sh​Dim sh As​P.S. А может​ dop.Cells(l, 6) dst.Cells(k,​
​ с их инвентарными​ End If ставим?​ с месиджбоксом «продолжать/отменить»​ реестру.​_Boroda_​End Sub​ Sheets(«1-4»).PrintOut Copies:=1, Collate:=True,​ не увидели, потому​Лузер​ строк содержит Таблица​Чтобы более-менее было удобно​ в него записать​ Данных».​ In ThisWorkbook.Worksheets​ Worksheet, s​ он вообще на​ 3) = dop.Cells(l,​ номерами.​Hugo121​ приладить, и с​

​В таблице Бюджет​​: Мне не нужно,​
​_Boroda_​ IgnorePrintAreas:=False End Select​ как, я не​: Для тех кто​

​ Данных. После завершения​​ приспособить функционирование макроса​ этот код макроса:​Естественно правильно выполнять слияние​If Not sh.[A1].Value​With ThisWorkbook​ морях — давненько​ 2) k =​
​п.с. Также при​: Да.​ начальным инпутбоксом с​ 466 финансовых органа​
​ чтобы Вы проверяли.​: 1. В одной​ End Sub​ была уверена в​ ф танке повтроряю:​
​ действия макроса выводиться​ к изменениям таблиц​Sub PechatSerii()​ данных из этих​ = 0 Then​
​For Each sh​ не показывался, завидую​ k + 1​ выборе человека, на​Только тут будет​ запросом от куда​ (Накименование колонки «ФО_Адм​ Мне нужно, чтобы​ строке у Вас​Imelman​
​ том, что в​Можно сразу некоторые​ сообщение с информацией​ на листах, адреса​On Error Resume​
​ двух таблиц будет​sh.PrintOut Copies:=3​ In .Worksheets​mark013​ End If End​ первой строчке карточки​

​ сперва первых 7.​​ и сколько печатать.​ МО»). Подскажите, пожалуйста,​ я проверял перед​ работа с шестым​: Всем хороших выходных​ даном случае нужно​ аргументы подставить, подробнее​ о завершении генерации​

CyberForum.ru

Макрос печати карточек из базы Excel

​ на диапазоны ячеек​​ Next​ реализовано с помощью​Else​If Not sh.[E46].Value​:​ If l =​ пишется его ФИО,​ Но можно проверять​
​Но это от​ как последовательно заполнять​ тем, как сюда​ листом, а в​Есть вопрос, по​ начинать с записи​
​ о них в​​ документов и о​ подаются в текстовых​Dim ListSerii As​ определенного макроса VBA.​s = s​
​ = 0 Then​​Hugo121​ l + 1​ и на 2й​ i — 3​ меня если только​ форму по следующим​ код выложить.​ строках ниже и​ этой теме, задам​ «быстрой печати».​ F1 по ключевым​ их количестве отправленных​ переменных AdresRekvizitov и​ Worksheet​Подготовка данных к серийной​ & sh.Name &​ s = s​, Спасибо огромное!​
​ Loop ‘ Показ​​ строчке пишется служба​Damon2013​
​ вечером…​ бюджетополучателям и выводить​Цитата​ выше — с​ сюда же пожалуй​Olga_L​ словам Built-In Dialog​ на печать:​
​ AdresDannye. Благодаря функции​Dim ListDannye As​ печати можно начать​ vbNewLine​ & sh.Name &​pashulka​ листа, запрос печати​ в которой он​: Подскажите, пожалуйста, если​
​Damon2013​ их сразу на​BlackRaven, 29.05.2018 в​
​ активным. Если активен​ чтоб темы не​: Я не прошу​ Box Argument Lists​После завершения действия макроса​ Range значения этих​ Worksheet​ из создания любой​

​End If​​ «,»​:​ dst.Activate If MsgBox(«Напечатать​ работает.​ у меня появилась​: Посмотрите, пож-та, что​
​ печать?​ 11:16, в сообщении​ шестой лист, то​ плодить.​ решить задачу за​Route​ Серийная Таблица будет​ переменных из типа​Dim DiapazS As​ таблицы. Но мы​Next sh​Next sh​mark013​ карточку?», vbOKCancel, «Печать​mc-black​ вторая таблица «Ассигнования»,​ получилось:​Т.е. сейчас на​ № 10 ()​ все нормально. А​Есть два листа​ меня. Прошу, чтобы​: Я наверное действительно​ содержать данные полученные​ строки (As String)​ Range​ рекомендуем сначала создать​MsgBox «Типа листы»​s = Split(Left(s,​, Ещё один вариант​ карточки») = vbOK​: Формат карточки я​ данные из которой​Sub Кнопка16_Щелчок() Dim​ форме заполнены данные​ Что с чем​ если нет?​ эксель, как их​ подсказали хотя бы​ в танке. Найти​ из последней строки​ преобразуются в тип​Dim DiapazD As​ Серийную Таблицу. Ведь​ & vbNewLine &​ Len(s) — 1),​ печати второго листа​ Then dst.PrintOut End​ немного изменил, так​ также нужно подтянуть​ i& Dim a​ по КФ г.Братска.​ поменять местами подскажете?Это​2. Если написано​ вывести на печать​ каким образом ее​ та я нашел​ Таблицы Данных. Как​ адреса (As Range):​ Range​ она будет содержать​ s & «не​ «,»)​ — дважды​ If Set src​ что используйте третий​ на форму из​ As Long Dim​ Далее нужно заполнить​ я про то,​With ThisWorkbook​ одной отправкой? (Необходимо​ решить.​ список диалогов, а​ показано ниже на​Set DiapazS = ListSerii.Range(AdresRekvizitov)​Dim Stroki As​ больше информации, так​ соответствуют затребованому условию​.Worksheets(s).PrintOut Copies:=1​ActiveWorkbook.Sheets(ShName(i)).PrintOut Copies:=i +​ = Nothing Set​ лист из моей​ таблица 1.rar.​ b As Long​ данные по след.​ про что Сергей​, то это​ чтоб принтер подхватил​JayBhagavan​ как задать имя​ рисунке:​Set DiapazD =​ Long​ как представляет собой​ или условиям,и не​End With​ 1 ‘Sheets(ShName(i)).PrintOut ,​ dop = Nothing​ книги. Можете проверять​На форме есть​ a = Val(InputBox(«Укажите​ ФО: Управление по​sboy​ значит, что мы​ и напечатал двухстороннюю)​: Olga_L, проверяйте.Скрытый текст​ листа нужного не​Таким образом у нас​ ListDannye.Range(AdresDannye)​Dim Stolbec As​ форму шаблона с​ выводятся на печать.»​End Sub​ , i +​ Set dst =​ в работе​ блок «Сумма межбюджетного​ диапазон печати с​ финансам и налогам​писал​

​ работаем с той​​ Sheets(«2»).Range(«A1:I70»).PrintOut Copies:=1, Collate:=True​​ Sub jjj() shs​​ врублюсь. Приведите пример​
​ получилось автоматизировать большой​Такой подход к построению​ Long​
​ видом, наиболее приближенным​

CyberForum.ru

макрос печати

​End Sub​​evgeny_t​
​ 1​​ Nothing End Sub​Option Explicit Sub​
​ трансферта, имеющего целевое​ …»)) b =​ администрации ЗГМО, потом​BlackRaven​
​ книгой, где находится​ Sheets(«3»).Range(«A1:I70»).PrintOut Copies:=1, Collate:=TrueМожет​ = Array(«1-4», «5-8»,​
​ пожалуйста.​ объем роботы с​
​ макроса имеет определенные​Dim Yacheyki As​

​ к финальному результату.​​Guest​: То что доктор​evgeny_t​
​Manqix​
​ test() If ActiveSheet.Name​biggrin

​ назначение/сумма изменения»​​ Val(InputBox(«Укажите диапазон печати​ по ДФ КБПиФ​: sboy, _Boroda_, Спасибо​ макрос. With что-то​ как-то по умному​lol lol

excelworld.ru

Макрос для печати файлов xls из конкретной папки

​ «9-12», «13-16», «17-20»)​​Лузер​ помощью макроса и​
​ преимущества. Можно свободно​ Range​ Просто потом его​: Да , как​ прописал!!!​: Имеется книга excel​:​ = «ПК» Then​
​2018 год нужно​ по …»)) For​ г. Иркутска и​

​ вам огромное. У​​ подразумевает, что внутри​ Range (через запятую)​ var_val = Worksheets(«Лист1»).[H3].Value​
​: sheets(«Лист1»).Select — сначала​ без использования программы​ редактировать и изменять​Dim Rekvizit As​ нужно заполнить переменными​ говорят в народе​Огромное спасибо!!!!!!!!!!​ с большим количеством​mc-black​ PrintCard ActiveCell.Row End​ заполнить данными из​ i = a​ так до конца.​ меня действительно не​ блока With -​ написать?​ i_f = LBound(shs)​ выделяем нужный лист​ Word.​ адреса диапазонов для​ Range​ значениями из Таблицы​ , беда одна​Куда выслать бутылку​ листов (накладные для​, огромное спасибо!​ Sub Private Sub​ таблицы «Ассигнования» 2018,​ + 2 To​

​ Т.е. будут выведены​​ вкидывало в 1​​ End With мы​​Возможно ли вообще?​ i_n = UBound(shs)​

​Application.Dialogs(xlDialogPrint).Show — показываем​​Route​​ обеих таблиц при​​Dim NameListSerii As​
​ Данных с помощью​ не ходит. Ко​ коньяку!!!)))))​

​ магазинов), как написать​​Завтра съезжу распечатаю​​ PrintCard(i As Long)​​ и т.д. 2019,​ b With Range(«AR13»)​ на печать 466​ страницу. После добавления​
​ будем обращаться к​Hugo​ i_n = WorksheetFunction.Min(var_val​ диалог, выбираем принтер​

​: Подскажите макрос, чтобы​​ их изменении размера​​ String​​ макроса.​

​ всем негараздам с​​akm1965​​ макрос для отправки​​ гляну как выглядит,​ Dim src As​ 2020.​
​ .NumberFormat = «General»​ форм по разным​ «ZOOM» все стало​ этому что-то, но​

CyberForum.ru

Макрос для отправки на печать листов с определенным условием

​: Можно так:​​ 4 +​ и печатаем​ распечатать указанный лист.​ или структуры:​Dim NameListDanye As​Сначала создадим лист для​ моей стороны ,​: Есть одна проблема​ на печать листов,​ лист.​ Worksheet, dop As​
​Т.е. будет формироваться​

​ .Value = «==Бюджет!L»​​ финансовым органам.​ как нужно!​ писать его не​
​Sheets(Array(«2», «3»)).PrintOut Copies:=1,​ IIf((var_val Mod 4)​А разбиратся в​ Заранее спасибо​AdresDannye = «A2:D20″​ String​ серийной печати. Самая​ добавилось тайное исчезновение​ — помогите пожалуйста.​ у которых значение​Вы гений​ Worksheet, dst As​ уже столько уведомлений,​ & i End​

​Заранее спасибо за​​Итого вот какую​
​ будем. Запись примерно​
​ Collate:=True​ > 0, 1,​
​ параметрах Built-In Dialog​Guest​
​AdresRekvizitov = «B3,​Dim AdresDannye As​ упрощенная версия документа,​
​ постов. Ну да​
​Нужно распечать с​

​ определённой ячейки отлично​taxi_driver​ Worksheet Dim j​ сколько сумм ассигнований,​ With DoEvents: DoEvents:​

​ помощь​​ версию я оставил:​ такая​
​Но тогда вероятно​ 0), i_n -​ мне лень​

​: ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1,​​ B4, B6, B7″​ String​ подготовленного к заполнению​

​ ладно.​​ книги определенные листы.​ от нуля, если​: добрый всем вечер​ As Long, k​ т.е порядка 1​

​ DoEvents ActiveWindow.SelectedSheets.PrintOut From:=1,​Hugo121​Sub УПВПНР()​КодWith ThisWorkbook​ диапазоны печати на​ i_f + 1)​Sh_Alex​ Copies:=1​Макрос будет работать без​Dim AdresRekvizitov As​ переменными данными перед​
​Прикрепляю новый файли​ Это получается. А​ равно нулю, то​постановка задачи​ As Long, l​ 714.​ To:=1, Copies:=1 DoEvents:​: — зачем?​ThisWorkbook.DisplayDrawingObjects = xlHide​
​.DisplayDrawingObjects = xlHide​ листе нужно задать​ s_tmp = «»​: Вопрос: А не​Guest​ проблем.​ String​ серийной печатью, изображена​ прошу срочной помощи.​ вот как записать​
​ лист не печатается.​не вдаваясь в​

​ As Long, m​​Как сделать выборку,​ DoEvents: DoEvents Next​

​Вместо​​With ActiveSheet.PageSetup​
​End Withточка перед​
​ заранее мануально, ну​ For i =​
​ кажется ли Вам​
​: сильно сказано :)​Код макроса содержит некоторую​
​’настройки структуры книги​ на рисунке:​ Иначе чудеса не​ макрос так, чтобы​Спасибо)​
​ подробности​
​ As Long Dim​ чтобы заполнялись к​ End SubЧто-то не​
​=ВПР(Бюджет!L3;Бюджет!L:L;1;ЛОЖЬ)​
​.Orientation = xlLandscape​
​ DisplayDrawingObjects означает, что​

​ или этим же​​ i_f To i_n​ что с жиру​
​Route​

​ информацию о структуре​NameListSerii = «Серии»​

​Несложно догадаться, что ячейки​​ закончатся.​ еще задать определенное​

​Юрий М​есть лист в​ sUser As String,​ примеру первые данные​ запускается на печать​проще дать прямую​.Zoom = False​ перед ним как​

​ макросом.​​ — 1 s_tmp​ бесимся?​
​: Да но так​ данной рабочей книги​

​NameListDanye = «Данные»​
​ B3, B4, B6​Hugo​
​ количество копий определенных​: Главное не написали:​
​ эксель нужно написать​ sPodr As String​
​ по КФ г.​

​ после ввода диапазона​​ ссылку​.FitToPagesWide = 1​

​ бы написано то,​Imelman​

​ = s_tmp &​
​Ну, для знатоков​ он просто сразу​
​ Excel: размещение исходных​AdresDannye = «A2:D20″​
​ и B7 предназначены​: У меня Эксель​
​ листов?​

​ «определённая» ячейка -​

​ макрос его печати​​ Set src =​
​ братска (будет 15​Hugo121​
​=Бюджет!L3​.FitToPagesTall = 1​
​ про что мы​: Да, в такой​ IIf(i > i_f,​
​ Excel — это​
​ выводит на печать​

​ данных и целевых,​AdresRekvizitov = «B3,​ для заполнения переменными​ проекты ВБА теряет,​Hugo​ это какая?​

​ при следующих условиях​​ Worksheets(1) Set dop​
​ уведомлений, т.к. 15​: 1. у меня​результат не изменится​End With​ написали With. Если​ форме сработало:​ Chr(10), «») &​ разминка ума, а​ тот лист на​ а также названия​ B4, B6, B7″​ данными из Таблицы​ гад…​: Строку .Worksheets(s).PrintOut Copies:=1​
​И зачем нам​печать выделенного фрагмента,​ = Worksheets(2) Set​ сумм). Наименование бюджета,​ не было ==​По вопросу -​Range(«A1:O23»).PrintOut​ без With, то​Sheets(Array(«1», «2»)).PrintOut Copies:=1,​ shs(i) Next i​ что для пользователя,​ котром был выполнен​ листов. Сами названия​’код программы​ Данных. А в​Но вряд ли​ видите?​ такой большой файл?​ вписывание всех столбцов​
​ dst = Worksheets(3)​

​ ФО и ОКТМО​​2. почему +2​

​ макросом организуете цикл​​ThisWorkbook.DisplayDrawingObjects = xlAll​

​ вот так КодThisWorkbook.DisplayDrawingObjects​
​ Collate:=True, _ IgnorePrintAreas:=False​ ActiveWindow.Sheets(Array(Split(s_tmp, Chr(10)))).PrintOut Copies:=1,​
​ задающего такую задачу?​ макрос, а мне​
​ листов указаны в​Set ListSerii =​
​ ячейку B9 введем​
​ в коде было​
​Проверяете s на​ А было бы​ в лист​
​ sUser = Trim$(src.Cells(i,​
​ будет одинаковое, разные​
​ только в одном​ по столбцу Бюджет!L:L​ ‘xlPlaceholders​ = xlHide .​Спасибо​ Collate:=True, IgnorePrintAreas:=False End​
​Два раза кликнуть​

​ нужно чтобы можно​​ строковых переменных NameListSerii​ ActiveWorkbook.Worksheets(NameListSerii)​ формулу, которая автоматически​ написано, что там​ «определённость», меняете количество.​ у Вас 100​макрорекордер ругается на​ 3)) sPodr =​ суммы ассигнований.​
​ случае? Ну да​ с заполнением ячейки​End Sub​ Короче, почитайте справку​

​BlackRaven​​ Sub​ мышкой «Файл_Печать» и​ было еще выбрать​
​ и NameListDannye.​Set ListDannye =​ вычислит сроки реализации​ должно было происходить?​

planetaexcel.ru

​select case s​

Olyabk,
я обшибся, когда написал, что знаю код.
Я назову программу, с помощью которой это можно сделать. С тебя 200 руб.

Добавлено через 3 минуты
НикоН,
а я наркоман, скажу тебе по секрету я пишу макросы для Word для работы.
Я сейчас разрабатываю новые шаблоны, но работу приходится делать на старых Шаблонах и сам удивляюсь, как они срабатывают: появляются всякие диалоговые окна, предупреждения, о которых я уже забыл — т.к. до 15 часов отхожу от алкоголя.

Добавлено через 9 часов 56 минут
Olyabk,
Скачай виртуальный принтер — doPDF v7 (он бесплатный, но мне кажется, что он может искажать информацию) или FinePrint (платная программа).
Печатаешь сначала в виртуальный принтер, а затем выбираешь реальный принтер — свойства — выбираешь сколько страниц на лист печатать.

Модератор:Naeel Maqsudov

ZSFoS

Сообщения:6
Зарегистрирован:11 мар 2010, 14:59

Мне надо Excel печатать несколько разных листов в книге в многолистовой книге. Инструментом печати это возможно, только выделив группу с помощью клавиши CTRL. Это для меня неудобно, так как каждый раз при печати приходится их выделять заново. Скрывать непечатаемые листы также неудобно, потому что их затем нужно опять отображать. В Word и OpenOffice.org Calc существует такая возможность, указывая необходимые листы через запятую (пробел). В OpenOffice.org Calc я набираю на отдельном листе номера листов для печати и затем копирую их и отправляю на двухсторонюю печать на дуплексный принтер. Это очень удобно, так как не нужно каждый раз вводить нужные листы для печати. В Excel же только возможно указать диапазон.
Можно как-то автоматизировать печать выборочных листов Excel, какой нибудь макрос или ещё что?

Аватара пользователя

Busine2009

Сообщения:322
Зарегистрирован:18 июл 2009, 15:34
Контактная информация:

20 мар 2010, 20:38

ZSFoS
а как ты хочешь указывать листы? По их порядковому номеру? Ты будешь их подсчитывать что ли?
Вопрос в том, как ты собираешься создать Группу с помощью Макроса.
Т.е. в книге ты печатаешь одну и ту же группу?

ZSFoS

Сообщения:6
Зарегистрирован:11 мар 2010, 14:59

21 мар 2010, 04:53

Busine2009 писал(а):ZSFoS
а как ты хочешь указывать листы? По их порядковому номеру? Ты будешь их подсчитывать что ли?
Вопрос в том, как ты собираешься создать Группу с помощью Макроса.

В OpenOffice.org Calc во время предварительного просмотра я создаю один или несколько наборов для печати в виде: 1 3 5 6 11 14 26 35, 1 3 5 6 11 14 26 36 41. номера я записываю на отдельном листе.
Затем, когда мне нужно быстро распечатать нужную комбинацию я её копирую через буфер обмена в печать и сразу распечатывается то, что надо.

Т.е. в книге ты печатаешь одну и ту же группу?

в одном случае одну, в другом другую.

nilem

Сообщения:112
Зарегистрирован:14 ноя 2008, 01:59
Откуда:Уфа

22 мар 2010, 17:05

Можно попробовать так. Предварительно создаем на каком-нибудь листе именованный диапазон «Печать», в него будем записывать номера листов, которые надо распечатать.
Sub ПечатьЛистов()
Dim cell As Range, pr As Integer

For Each cell In Range(«Печать»)
If cell.Value > 0 Then
pr = cell.Value
If СуществЛист(pr) = False Then
MsgBox «Листа » & pr & » не существует», , «Печать»
GoTo act1
Else
ActiveWorkbook.Sheets(pr).Activate
MsgBox «Печатаем лист » & pr, , «Печать»
ActiveWorkbook.Sheets(pr).PrintOut
End If
Else
Exit For
End If

act1:
Next cell
End Sub

Private Function СуществЛист(index) As Boolean
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(index)
If Err.Number = 0 Then
СуществЛист = True
Else
СуществЛист = False
End If
End Function

Ненужные MsgBox можно закомментировать.

Аватара пользователя

Busine2009

Сообщения:322
Зарегистрирован:18 июл 2009, 15:34
Контактная информация:

27 мар 2010, 16:09

ZSFoS
у меня появляется просвет. Могу предложить вариант, в котором надо будет вводить числа через запятые — через пробелы нельзя. Пойдёт так?

Аватара пользователя

Busine2009

Сообщения:322
Зарегистрирован:18 июл 2009, 15:34
Контактная информация:

27 мар 2010, 18:27

ZSFoS
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно «Печать» и тебе надо нажать Окей.

У вас нет необходимых прав для просмотра вложений в этом сообщении.

ZSFoS

Сообщения:6
Зарегистрирован:11 мар 2010, 14:59

01 апр 2010, 12:54

Busine2009 писал(а):ZSFoS
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно «Печать» и тебе надо нажать Окей.

через запятую хорошо, но я не знаю что с этими файлами делать, как их запускать? у меня Microsoft Excel 2010 (Beta), макросами еще не пользовался,

ZSFoS

Сообщения:6
Зарегистрирован:11 мар 2010, 14:59

01 апр 2010, 12:58

nilem писал(а):Можно попробовать так. Предварительно создаем на каком-нибудь листе именованный диапазон «Печать», в него будем записывать номера листов, которые надо распечатать.
Sub ПечатьЛистов()
Dim cell As Range, pr As Integer

For Each cell In Range(«Печать»)
If cell.Value > 0 Then
pr = cell.Value
If СуществЛист(pr) = False Then
MsgBox «Листа » & pr & » не существует», , «Печать»
GoTo act1
Else
ActiveWorkbook.Sheets(pr).Activate
MsgBox «Печатаем лист » & pr, , «Печать»
ActiveWorkbook.Sheets(pr).PrintOut
End If
Else
Exit For
End If

act1:
Next cell
End Sub

Private Function СуществЛист(index) As Boolean
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(index)
If Err.Number = 0 Then
СуществЛист = True
Else
СуществЛист = False
End If
End Function

Ненужные MsgBox можно закомментировать.

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

nilem

Сообщения:112
Зарегистрирован:14 ноя 2008, 01:59
Откуда:Уфа

01 апр 2010, 14:13

Этот код вставьте в модуль в VBE, щелкните где-нибудь в теле процедуры Sub ПечатьЛистов() и нажмите F5. Предварительно создайте на каком-нибудь листе именованный диапазон «Печать» с номерами листов для печати.

ZSFoS

Сообщения:6
Зарегистрирован:11 мар 2010, 14:59

01 апр 2010, 16:52

Busine2009 писал(а):ZSFoS
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно «Печать» и тебе надо нажать Окей.

Разобрался как импортировать в VBA эти файлы. Только не печатает, дошёл до этого окна: (рис. 1)
Затем двойной клик на печать и появляется это (рис.2)
Что дальше?

У вас нет необходимых прав для просмотра вложений в этом сообщении.

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

Для начала рассмотрим различные возможности, которые предоставляет Excel для печати данных, содержащихся в рабочих книгах, а для определенности остановимся на Excel 2007. В других версиях могут отличаться пункты меню и их названия, а по сути, все действия предельно похожи. Для избежания путаницы определимся с терминами: лист — это часть рабочей книги Excel, а страница — это часть листа, ограниченная размерами бумажного носителя, на который производится печать документа.

Для удобства выведем значок «Быстрая печать» на панель быстрого доступа.

как вывести значок быстрой печати в панель быстрого доступа Excel

«Быстрая печать» от «печати» отличается тем, что отправляет документ на используемый по умолчанию принтер без внесения каких-либо изменений, в то время как «Печать» подразумевает выбор принтера, числа копий и других параметров печати перед печатью документа.

Как распечатать диапазон ячеек?

Выделить необходимый для печати диапазон ячеек, после чего перейти на вкладку «Разметка страницы» и в группе «Параметры страницы» зайти в меню кнопки «Область печати» после чего выбрать пункт «Задать». Таким образом, задается область печати и щелчок по кнопке «Быстрая печать» отправит эту область на принтер.

Как распечатать страницу или несколько страниц листа?

Для того чтобы распечатать определенную страницу документа, расположенного на листе рабочей книги Excel, необходимо щелкнуть по кнопке «Office» в левом верхнем углу окна, в меню типичных команд навести курсор на пункт печать и в списке команд выбрать одноименный пункт «Печать». Откроется окно «Печать». Окно «Печать» можно вызвать также сочетанием горячих клавиш Ctrl+P (P- это первая буква от английского слова print).

kak-raspechatat-stranitsu-v-excel

Выбрав в этом окне опцию «Страницы» можно задать регуляторами значения нужных страниц и при необходимости можно задать число копий в группе «Копии». Для отправки выбранных страниц на принтер нажимается кнопка «ОК».

Как распечатать таблицу?

Для печати таблицы данных, необходимо выделить любую ячейку из этой таблицы, после чего вызвать окно «Печать» сочетанием горячих клавиш Ctrl+P, либо через кнопку «Office»/пункт «Печать»/кнопку «Печать». В этом окне, в группе «Вывести на печать» нужно активировать опцию «Таблицу», при необходимости задать число копий и нажать кнопку «ОК» для запуска процесса печати.

Как распечатать лист?

Для того чтобы быстро распечатать лист, то есть все страницы документа, расположенного на листе, нужно кликнуть на кнопку «Быстрая печать» в панели быстрого доступа, либо кликнуть по кнопке «Office», в меню типичных задач навести курсор мыши на пункт «Печать» и выбрать пункт «Быстрая печать».

Как распечатать несколько листов?

В окне открытой книги необходимо выделить нужные листы, щелкая по их ярлыкам с нажатой клавишей Ctrl. После этого надо вызвать окно «Печать» одним из вышеописанных способов, например через сочетание клавиш Ctrl+P. При необходимости можно установить число копий (оно не должно превышать 999) и снять/установить флажок у пункта «Разобрать по копиям». При включенном флажке принтер распечатает документ, начиная с первой и заканчивая последней страницей заданное количество раз, а при отключенном, сначала первую страницу документа заданное число раз, затем вторую и так далее.

Как распечатать книгу?

Для печати всей книги целиком, то есть всех страниц на всех листах открытой рабочей книги необходимо вызвать окно «Печать» одним из двух способов, описанных выше (например, нажав Ctrl+P) и в группе опций «Вывести на печать» выбрать пункт «Всю книгу».

Как распечатать несколько книг?

При печати нескольких книг действует одно ограничение – все файлы этих книг должны находиться в одной папке. Через кнопку «Office» и пункт меню типичных команд «Открыть» (либо нажатием сочетания клавиш Ctrl+O) необходимо выбрать папку, в которой расположены файлы книг и при нажатой клавише Ctrl поочередно щелкнуть по всем нужным файлам книг. После этого в окне «Открытие документа» надо раскрыть меню кнопки «Сервис» и выбрать пункт «Печать».

Как распечатать несколько листов в нескольких книгах?

А что если необходимо распечатать по одному или по несколько листов из множества файлов? Или отправить на печать листы с определенными названиями, из выбранных рабочих книг? Придется либо перебирать один за другим все файлы книг, отправляя на печать нужные листы, либо печатать полностью все книги, а затем выбрасывать в корзину бумажные листы с отпечатанными лишними данными. Оптимально решить эту задачу поможет надстройка для Excel, в диалоговом окне которой можно выбрать необходимые для печати файлы и задать номера или имена листов, которые требуется распечатать.

kak raspechatat opredelennye listy iz raznyh rabochih knig excelCompleteSolutionнадстройка для выборочной печати страниц и листов из выбранных рабочих книг

Надстройка позволяет:

1. Одним кликом мыши вызывать диалоговое окно надстройки прямо из панели инструментов Excel;

2. выбирать необходимые файлы для печати;

3. задавать по имени или по номерам листы из выбранных файлов для печати;

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

5. изменять ориентацию страниц с книжной на альбомную;

6. устанавливать количество копий;

7. задавать номера страниц для печати (если номера не установлены, то на печать отправляются все страницы);

8. устанавливать масштаб в процентах от натуральной величины (в пределах от 10 до 400).

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

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

Видео по работе с надстройкой

Другие материалы по теме:

Понравилась статья? Поделить с друзьями:
  • Excel макрос переходы по ячейкам
  • Excel макрос переход от ячейки
  • Excel макрос перенос ячеек
  • Excel макрос перенос строки
  • Excel макрос перемещение по листам