Страницы: 1
RSS
Макрос для отправки на печать листов с определенным условием
 
Имеется книга excel с большим количеством листов (накладные для магазинов), как написать макрос для отправки на печать листов, у которых значение определённой ячейки отлично от нуля, если равно нулю, то лист не печатается.  
Спасибо)
 
Главное не написали: "определённая" ячейка - это какая?  
И зачем нам такой большой файл? А было бы у Вас 100 листов - все показали бы? В Вашем конкретном случае можно было вообще обойтись без файла-примера, указав в вопросе: печатать только листы, у которых в ячейке, например, А1 значение > 0.
 
Попробуйте такую продцедуру:  
Sub MyPrint()  
Dim sh As Worksheet  
For Each sh In ThisWorkbook.Worksheets  
If Not sh.[A1].Value = 0 Then sh.PrintOut Copies:=1
Next sh  
End Sub  
 
Проверяется значение ячейки А1 на всех листах книги, если не равно нулю то печатаем.
Редко но метко ...
 
{quote}{login=Юрий М}{date=18.01.2012 12:09}{thema=}{post}Главное не написали: "определённая" ячейка - это какая?  
И зачем нам такой большой файл? А было бы у Вас 100 листов - все показали бы? В Вашем конкретном случае можно было вообще обойтись без файла-примера, указав в вопросе: печатать только листы, у которых в ячейке, например, А1 значение > 0.{/post}{/quote}  
Прошу прощения за неграмотный вопрос)    
PS у меня в книге белее 100 листов..
 
Про главное опять умолчали... Смотрите вариант от GIG_ant'а
 
{quote}{login=GIG_ant}{date=18.01.2012 12:19}{thema=}{post}Попробуйте такую продцедуру...{/post}{/quote}  
Большое спасибо!!! Только что попробовал, всё  работает!! Но есть нюанс, который хотелось бы  учесть...  
 
Дело в том, что при выполнении макроса на печать отправляется каждый лист по отдельности, у меня лазерный принтер и каждый лист он печатает как новый документ, то есть очень много времени тратится..    
 Обычно я  выделяю нужные листы вручную  (их в книге больше 100)  и отправляю на печать командой "файл -  печать", в таком случае принтер печатает листы без остановки.  
 Так вот, корректный вопрос будет наверное таков: как написать макрос,  чтобы выделить листы с условием, что если ячейка E46 отлична от нуля, то лист выделяется, если нет -  то нет..    
  Еще раз огромное спасибо!!
 
{quote}{login=Юрий М}{date=18.01.2012 12:09}{thema=}{post}Главное не написали: "определённая" ячейка - это какая?{/post}{/quote}  
прошу прощения)) E46  ))
 
Вот такой вариант:  
Sub MyPrint()  
Dim sh As Worksheet, s  
With ThisWorkbook  
For Each sh In .Worksheets  
If Not sh.[E46].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
Редко но метко ...
 
То что доктор прописал!!!  
Огромное спасибо!!!!!!!!!!  
 
Куда выслать бутылку коньяку!!!)))))
 
Есть одна проблема - помогите пожалуйста.  
 
Нужно распечать с книги определенные листы. Это получается. А вот как записать макрос так, чтобы еще задать определенное количество копий определенных листов?
 
Строку .Worksheets(s).PrintOut Copies:=1 видите?  
Проверяете s на "определённость", меняете количество.  
 
select case s  
case "qwer": .Worksheets(s).PrintOut Copies:=2  
case "tyui": .Worksheets(s).PrintOut Copies:=3  
case else: .Worksheets(s).PrintOut Copies:=1  
end select
 
Или так - меньше букв:  
 
Dim n As Byte  
 
Select Case s  
Case "qwer": n = 2  
Case "tyui": n = 3  
Case Else: n = 1  
End Select  
 
.Worksheets(s).PrintOut Copies:=n
 
Sub Печать()  
Dim sh As Worksheet  
For Each sh In ThisWorkbook.Worksheets  
If Not sh.[A1].Value = 0 Then sh.PrintOut Copies:=3
Next sh  
End Sub  
 
Как вот изменить данный макрос? печать последний страницы 1 копии.я не силен и не могу сам разобраться.
 
Пардон!  
Ребят , что нужно добавить во второй макрос, чтобы листы , которые не соответствуют даному условию(в нашем случае, если ячейка=0), выводились бы в окно сообщений. Типа листы такие то (перечень), не соответствуют затребованому условию или условиям,и не выводятся на печать.  
И еще , как в этот же макрос добавлять  допусловия для проверки. например , больше чем одна , ко-во проверяемых ячеек и , плюс количество печатаемых столбцов таблицы (если не подлежащие печати столбцы не скрыты, то также выпадает сообщение в окне. Критерий для определения непечатаемых столбцов, например в строке нумерации столбцов, стоит русская буква х.  
Благодарю за ответ!
 
(:
 
До "ещё":  
 
Sub Печать()  
Dim sh As Worksheet  
For Each sh In ThisWorkbook.Worksheets  
If Not sh.[A1].Value = 0 Then
sh.PrintOut Copies:=3  
Else  
s = s & sh.Name & vbNewLine  
End If  
Next sh  
MsgBox "Типа листы" & vbNewLine & s & "не соответствуют затребованому условию или условиям,и не выводятся на печать."  
End Sub
 
Да , как говорят в народе , беда одна не ходит. Ко всем негараздам с моей стороны , добавилось тайное исчезновение постов. Ну да ладно.  
Прикрепляю новый файли прошу срочной помощи. Иначе чудеса не закончатся.
 
У меня Эксель проекты ВБА теряет, гад...  
Но вряд ли в коде было написано, что там должно было происходить?
Страницы: 1
Читают тему
Наверх