powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос для печати определенных страниц листа (Excel 2003)
16 сообщений из 16, страница 1 из 1
Макрос для печати определенных страниц листа (Excel 2003)
    #37434760
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, знатоки !
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
Макрос для печати определенных страниц листа (Excel 2003)
    #37434999
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое "ячейка страницы"?
Дело в том, что в зависимости от полей, принтера, бумаги и т.п. определенная конкретная ячейка может находиться на той или другой странице.

Если же ее адрес известен, то извольте
Код: plaintext
If Worksheets("Лист 1").Cells( 5 , 6 )="" Then ...
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435017
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, адреса всех ячеек (в которых мажет быть "") известны,
на листе девять страниц, когда выводим на печать весь лист
Код: plaintext
1.
        ActiveWindow.SelectedSheets.PrintOut Copies:= 1 , Collate:=True
мне требуется чтобы страницы в которых извстная ячейка, содержащая "", не выводилась на печать.
Другими словами, я не знаю как запретить печать страницы на которой известная ячейка = ""
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435041
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда чем не устраивает мой код?
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435057
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proтогда чем не устраивает мой код?
не могу сообразить что дальше,
Код: plaintext
If Worksheets("Лист 1").Cells( 5 , 6 )="" Then ...
как именно отменить печать, а потом продолжить где не равно ""?
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435066
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Макрос для печати определенных страниц листа (Excel 2003)
    #37435068
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
так?
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435072
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Макрос для печати определенных страниц листа (Excel 2003)
    #37435098
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Макрос для печати определенных страниц листа (Excel 2003)
    #37435118
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем такие навороты, если есть закономерность?
Код: 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
Макрос для печати определенных страниц листа (Excel 2003)
    #37435138
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, еще раз спасибо за помощь.
Все отлично работает.
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435142
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Макрос для печати определенных страниц листа (Excel 2003)
    #37435145
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда писал, не видел ответ Шокера:-)
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #37435149
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей, Вам тоже спасибо и уважение.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Макрос для печати определенных страниц листа (Excel 2003)
    #39575192
Leordan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что в этом коде нужно изменить чтобы печатались только страницы номер 2 с каждого листа, всей книги? Листов у меня 40. на каждом листе несколько страниц от 2-10. Пока приходится печатать вручную запускать с каждого листа...( Заранее спасибо!
...
Рейтинг: 0 / 0
Макрос для печати определенных страниц листа (Excel 2003)
    #39575205
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leordanчто в этом коде нужно изменить чтобы печатались только страницы номер 2 с каждого листа, всей книги?Добавить перебор листов:
Код: vbnet
1.
2.
3.
For Each oneWorksheet In ThisWorkbook.Sheets
    oneWorksheet.PrintOut ...
Next
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос для печати определенных страниц листа (Excel 2003)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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