Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос для печати определенных страниц листа (Excel 2003) / 16 сообщений из 16, страница 1 из 1
11.09.2011, 14:43
    #37434760
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Добрый день, знатоки !
Excel 2003

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

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

Например:
если на восьмой странице, количество порядковых номеров = "", то выводим на печать страницы с 1 по 7, 9.
если на восьмой и седьмой странице, количество порядковых номеров = "", то выводим на печать страницы с 1 по 6, 9.
если на восьмой, седьмой и шестой странице, количество порядковых номеров = "", то выводим на печать страницы с 1 по 5, 9.
И так далее.

Что-то наподобие
Код: plaintext
1.
2.
3.
    ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 7 , Copies:= 1 , Collate _
        :=True
    ActiveWindow.SelectedSheets.PrintOut From:= 9 , To:= 9 , Copies:= 1 , Collate _
        :=True
Или
Код: plaintext
1.
2.
3.
    ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 6 , Copies:= 1 , Collate _
        :=True
    ActiveWindow.SelectedSheets.PrintOut From:= 9 , To:= 9 , Copies:= 1 , Collate _
        :=True
И так далее.
Но я не знаю как применить условие, которое надо.

Спасибо.
...
Рейтинг: 0 / 0
11.09.2011, 19:29
    #37434999
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Что такое "ячейка страницы"?
Дело в том, что в зависимости от полей, принтера, бумаги и т.п. определенная конкретная ячейка может находиться на той или другой странице.

Если же ее адрес известен, то извольте
Код: plaintext
If Worksheets("Лист 1").Cells( 5 , 6 )="" Then ...
...
Рейтинг: 0 / 0
11.09.2011, 19:46
    #37435017
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Shocker.Pro, адреса всех ячеек (в которых мажет быть "") известны,
на листе девять страниц, когда выводим на печать весь лист
Код: plaintext
1.
        ActiveWindow.SelectedSheets.PrintOut Copies:= 1 , Collate:=True
мне требуется чтобы страницы в которых извстная ячейка, содержащая "", не выводилась на печать.
Другими словами, я не знаю как запретить печать страницы на которой известная ячейка = ""
...
Рейтинг: 0 / 0
11.09.2011, 19:58
    #37435041
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
тогда чем не устраивает мой код?
...
Рейтинг: 0 / 0
11.09.2011, 20:14
    #37435057
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Shocker.Proтогда чем не устраивает мой код?
не могу сообразить что дальше,
Код: plaintext
If Worksheets("Лист 1").Cells( 5 , 6 )="" Then ...
как именно отменить печать, а потом продолжить где не равно ""?
...
Рейтинг: 0 / 0
11.09.2011, 20:22
    #37435066
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
If Worksheets("Лист1").Cells( 5 , 6 )<>"" Then _
  ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 1 , Copies:= 1 , Collate:=True
If Worksheets("Лист1").Cells( 5 , 10 )<>"" Then _
  ActiveWindow.SelectedSheets.PrintOut From:= 2 , To:= 2 , Copies:= 1 , Collate:=True
If Worksheets("Лист1").Cells( 5 , 100 )<>"" Then _
  ActiveWindow.SelectedSheets.PrintOut From:= 3 , To:= 3 , Copies:= 1 , Collate:=True

...
...
Рейтинг: 0 / 0
11.09.2011, 20:23
    #37435068
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
If Worksheets("Лист 1").Cells( 5 , 6 )="" Then 
ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 1 , Copies:= 1 , Collate:=False
Else
ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 1 , Copies:= 1 , Collate:=True
If Worksheets("Лист 1").Cells( 10 , 6 )="" Then 
ActiveWindow.SelectedSheets.PrintOut From:= 2 , To:= 2 , Copies:= 1 , Collate:=False
Else
ActiveWindow.SelectedSheets.PrintOut From:= 2 , To:= 2 , Copies:= 1 , Collate:=True
...
End If
End If
так?
...
Рейтинг: 0 / 0
11.09.2011, 20:26
    #37435072
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
G.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
If Worksheets("Лист 1").Cells( 5 , 6 )="" Then 
ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 1 , Copies:= 1 , Collate:=False
Else
ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 1 , Copies:= 1 , Collate:=True
If Worksheets("Лист 1").Cells( 10 , 6 )="" Then 
ActiveWindow.SelectedSheets.PrintOut From:= 2 , To:= 2 , Copies:= 1 , Collate:=False
Else
ActiveWindow.SelectedSheets.PrintOut From:= 2 , To:= 2 , Copies:= 1 , Collate:=True
...
End If
End If
так?
да, билиберда какая-то ...
Shocker.Pro, спасибо, буду пробовать.
...
Рейтинг: 0 / 0
11.09.2011, 21:06
    #37435098
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Shocker.Pro, спасибо большое.
Вот что у меня получилось. Это нормально?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Print_IN16()
    ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 2 , Copies:= 1 , Collate:=True
    If ActiveSheet.Range("AY98") <> "" Then _
        ActiveWindow.SelectedSheets.PrintOut From:= 3 , To:= 3 , Copies:= 1 , Collate:=True
    If ActiveSheet.Range("AY131") <> "" Then _
        ActiveWindow.SelectedSheets.PrintOut From:= 4 , To:= 4 , Copies:= 1 , Collate:=True
    If ActiveSheet.Range("AY164") <> "" Then _
        ActiveWindow.SelectedSheets.PrintOut From:= 5 , To:= 5 , Copies:= 1 , Collate:=True
    If ActiveSheet.Range("AY197") <> "" Then _
        ActiveWindow.SelectedSheets.PrintOut From:= 6 , To:= 6 , Copies:= 1 , Collate:=True
    If ActiveSheet.Range("AY230") <> "" Then _
        ActiveWindow.SelectedSheets.PrintOut From:= 7 , To:= 7 , Copies:= 1 , Collate:=True
    If ActiveSheet.Range("AY263") <> "" Then _
        ActiveWindow.SelectedSheets.PrintOut From:= 8 , To:= 8 , Copies:= 1 , Collate:=True
    ActiveWindow.SelectedSheets.PrintOut From:= 9 , To:= 9 , Copies:= 1 , Collate:=True
End Sub
Вроде работает.
...
Рейтинг: 0 / 0
11.09.2011, 21:30
    #37435118
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
а зачем такие навороты, если есть закономерность?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Print_IN16()
    Dim i As Integer
    ActiveWindow.SelectedSheets.PrintOut From:= 1 , To:= 2 , Copies:= 1 , Collate:=True
    For i= 3  To  8 
      If ActiveSheet.Range("AY"+CStr((i- 3 )* 33 + 98 )) <> "" Then _
          ActiveWindow.SelectedSheets.PrintOut From:=i, To:=i, Copies:= 1 , Collate:=True
    Next
    ActiveWindow.SelectedSheets.PrintOut From:= 9 , To:= 9 , Copies:= 1 , Collate:=True
End Sub
...
Рейтинг: 0 / 0
11.09.2011, 21:43
    #37435138
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Shocker.Pro, еще раз спасибо за помощь.
Все отлично работает.
...
Рейтинг: 0 / 0
11.09.2011, 21:44
    #37435142
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
G., как-то громоздко. Мож так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Print_IN16()
    Dim s$, i&
    With ActiveWindow.SelectedSheets
        .PrintOut  1 ,  2 
        For i =  1  To  6 
            s = Choose(i, "AY98", "AY131", "AY164", "AY197", "AY230", "AY263")
            If ActiveSheet.Range(s) <> "" Then .PrintOut i +  2 , i +  2 
        Next
        .PrintOut  9 ,  9 
    End With
End Sub
Не видя примера сложно судить. Может можно еще технологичней.
...
Рейтинг: 0 / 0
11.09.2011, 21:47
    #37435145
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Когда писал, не видел ответ Шокера:-)
...
Рейтинг: 0 / 0
11.09.2011, 21:48
    #37435149
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Сергей, Вам тоже спасибо и уважение.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.12.2017, 09:36
    #39575192
Leordan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
что в этом коде нужно изменить чтобы печатались только страницы номер 2 с каждого листа, всей книги? Листов у меня 40. на каждом листе несколько страниц от 2-10. Пока приходится печатать вручную запускать с каждого листа...( Заранее спасибо!
...
Рейтинг: 0 / 0
25.12.2017, 09:55
    #39575205
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос для печати определенных страниц листа (Excel 2003)
Leordanчто в этом коде нужно изменить чтобы печатались только страницы номер 2 с каждого листа, всей книги?Добавить перебор листов:
Код: vbnet
1.
2.
3.
For Each oneWorksheet In ThisWorkbook.Sheets
    oneWorksheet.PrintOut ...
Next
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос для печати определенных страниц листа (Excel 2003) / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]