Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Печать разного количества листов по условию - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Печать разного количества листов по условию (Макросы/Sub)
Печать разного количества листов по условию
Garik007 Дата: Четверг, 18.05.2017, 18:19 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 81
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках 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.
Можно ли это исправить?
 
Ответить
СообщениеДобрый день. Написал макрос для печати нескольких копий листов из книги в зависимости от количества, устанавливаемого в ячейках 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.
Можно ли это исправить?

Автор - Garik007
Дата добавления - 18.05.2017 в 18:19
KuklP Дата: Четверг, 18.05.2017, 18:37 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2214
Репутация: 472 ±
Замечаний: 0% ±

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


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеМожет проблема в том, что для всех этих Range("N44")... не указан родительский объект? Откуда они берутся, файла-то нет :(

Автор - KuklP
Дата добавления - 18.05.2017 в 18:37
Garik007 Дата: Четверг, 18.05.2017, 20:45 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 81
Репутация: 0 ±
Замечаний: 0% ±

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

UPD. А вот и сам файл.
К сообщению приложен файл: 6883324.xlsm(33Kb)


Сообщение отредактировал Garik007 - Четверг, 18.05.2017, 21:38
 
Ответить
СообщениеKuklP, файл смогу только завтра приложить, только как-то странно получается условия формирования Range("N44")... везде одинаковы, а печать идет только первых двух. Если убрать 44 и 45 будет без проблем печатать 46 и 47, убрать 46 и 47 будет нормально печатать 48 и 49 и так далее, но только всегда первые 2 листа.
А где его взять этот родительский объект? Указание вручную цифр на листе ситуацию вроде не меняет, завтра попробую вместо Range("N44")... указать конкретные цифры в самом макросе.
Листов около сотни и вручную указывать при печати количество экземпляров каждого как-то муторно получается.

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

Автор - Garik007
Дата добавления - 18.05.2017 в 20:45
gling Дата: Четверг, 18.05.2017, 21:24 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 388 ±
Замечаний: 0% ±

2010
Здравствуйте.
А где его взять этот родительский объект?
Это имя листа на котором записаны данные в этих ячейках. выглядеть должно так [vba]
Код
=Sheets("ЗесьИмяЛиста").Range("N48").Value
[/vba]или через With. А лучше конечно в файле пробовать и показывать, в файле понятнее.
 
Ответить
СообщениеЗдравствуйте.
А где его взять этот родительский объект?
Это имя листа на котором записаны данные в этих ячейках. выглядеть должно так [vba]
Код
=Sheets("ЗесьИмяЛиста").Range("N48").Value
[/vba]или через With. А лучше конечно в файле пробовать и показывать, в файле понятнее.

Автор - gling
Дата добавления - 18.05.2017 в 21:24
KuklP Дата: Пятница, 19.05.2017, 06:43 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2214
Репутация: 472 ±
Замечаний: 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
 
Ответить
СообщениеНу так у Вас там ноль в третьем кол-ве. Попробуйте так, в модуль листа "список":
[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]

Автор - KuklP
Дата добавления - 19.05.2017 в 06:43
Garik007 Дата: Пятница, 19.05.2017, 08:54 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 81
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Garik007
Дата добавления - 19.05.2017 в 08:54
KuklP Дата: Пятница, 19.05.2017, 09:00 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2214
Репутация: 472 ±
Замечаний: 0% ±

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

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

Макрос отработал до конца, считайте к-во документов в столбце и в диспетчере печати.
К сообщению приложен файл: 7199723.gif(91Kb)


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


Сообщение отредактировал KuklP - Пятница, 19.05.2017, 09:07
 
Ответить
Сообщение
Если добавить Вашу формулу в модуль листа выдает ошибку "Invalid use of Me keyword".

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

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

Автор - KuklP
Дата добавления - 19.05.2017 в 09:00
Garik007 Дата: Пятница, 19.05.2017, 09:26 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 81
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Garik007
Дата добавления - 19.05.2017 в 09:26
KuklP Дата: Пятница, 19.05.2017, 11:15 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2214
Репутация: 472 ±
Замечаний: 0% ±

2003-2010


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЧто такое модуль? Какие бывают модули?

Автор - KuklP
Дата добавления - 19.05.2017 в 11:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Печать разного количества листов по условию (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!