powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать умный макрос для печати определенных страниц из одной открытой книги?
25 сообщений из 62, страница 1 из 3
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36470380
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Знатоки ВБА! Вот сочинил такой вот (см. в файле) код для печати. Как более продвинутую альтернативу тому - , что в имеется моей предыдущей теме : «Дописать макрос для печати листов Ексель».
Поясняю! Предыдущий вариант, плох тем, что в нем нет возможности оставить окно печати на экране ПК после выхода из режима просмотра, печатаемого документа. А то, что я придумал сам, выводит на экран не одно, а сразу два окна печати. Что сильно достает пользователя.
Но вернемся к альтернативному варианту, В нем я вроди бы все сделал правильно, однако макрос «cmdPrint_Click», ругается на строке : z = x.Parent.HPageBreaks.Count (см. в файле). Не догоняю почему? Может кто подскажет?
И далее. Мне нужно чтобы он печатал конкретные листы этой книги. А я почему то не уверен, что он будет это делать.
Потом, в случае если на вторую страницу выводится меньше двух строк, то согласитесь, что из-за одной строки печатать лишнюю страницу, простол глупо.
Так вот, в таком случае, макрос должен сжать (выдав при этом предупреждение с кнопками «Да» или «Нет») таблицу так , чтобы эти строки переместились на первую страницу (в ручном режиме это можно сделать). И стал печатать только одну страницу. Но не автоматом. А в ручном режиме. То бишь, после выхода из режима просмотра и нажатия на кнопку печать.
И так макрос должен поступать с каждой энной страницей, где возникает подобная ситуация.
И было бы суперово, если бы перед печатью, можно было вручную задавать номера страниц, выводимых на печать. Примерно так, как в стандартном окне Винды.
Это для случая, если , например, надо перепечатать не всю книгу, а лишь некоторые страницы конкретного документа.
Вот такая супер сложная для меня задачка. Заранее СПАСИБО, за помощь в ее решении.
С уважением, автор Темы
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36470475
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gleod,

Тут написал, что чтобы после предварительного просмотра не исчезало окно печати, надо нажимать кнопку Страница, а не Закрыть.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36470505
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,

Установка колонтитулов с номером страницы.
Нужно выбрать одну из 6-и строчек, которая больше подходит.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
With ActiveSheet.PageSetup
  .LeftHeader = "&P" 'Левый верхний колонтитул.
  .CenterHeader = "&P" 'Центральный верхний колонтитул.
  .RightHeader = "&P" 'Правый верхний колонтитул.
  .LeftFooter = "&P" 'Левый нижний колонтитул.
  .CenterFooter = "&P" 'Центральный нижний колонтитул.
  .RightFooter = "&P" 'Правый нижний колонтитул.
End With
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36470539
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gleod,

На
Код: plaintext
z = x.Parent.HPageBreaks.Count
при тестировании не ругалось.
Зато ругается, что переменная i не объявлена, а так-же на неверный код
Код: plaintext
Activating.SelectedSheets.PrintOut Copies:= 1 , Collate:=True


не вдаваясь в подробности работы кода, я бы его поменял так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub cmdPrint_Click()
 Dim x As Range
 Dim i As Integer
 Dim z As Long
 
 Set x = ActiveSheet.UsedRange
 z = x.Parent.HPageBreaks.Count
 For i =  1  To z +  1  Step  2 
  ActiveWindow.SelectedSheets.PrintOut Copies:= 1 , Collate:=True
 Next
  MsgBox "Вставьте распечатанные листы в принтер для печати на обратной стороне"
 For i =  2  To z +  1  Step  2 
  ActiveWindow.SelectedSheets.PrintOut Copies:= 1 , Collate:=True
 Next
End Sub
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36470682
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и возможность отказаться от печати второй стороны :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
' ПечатьЧНС
' Макрос записан 17.01.1998
' Автор Климов Павел Юрьевич
' http://www.msoffice.nm.ru
If MsgBox(Prompt:="Хотите ли Вы продолжить печать ?", _
   Buttons:=vbYesNo, Title:="") = vbNo Then
   Exit Sub
Else
   MsgBox Prompt:="Переверните листы и нажмите 'ОК'", _
   Buttons:=vbOKOnly, Title:=""
End If
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36470749
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,доброго вам здоровя!
ДЛя начала, спасибо за дельную подсказку по поводу Страница. И прошу прощения за мою невнимательность. В предыдущий файл просто больше не заглядывал.
А оттносительно вашего ну очень полезного макроса "cmdPrint_Click". В целом - ест good! Но есть одно заамечание. Нет возможности отказа от печати с обратной стороны листа. Доработать бы. Тогда полный супер.

"Установка колонтитулов с номером страницы"
Здесь, если можно,подетальнее, какая связь с моим вопросом? Я вроди бы о уколонтитулах нигде не упоминал.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36471626
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доработать бы - Hugo121Ну и возможность отказаться от печати второй стороны :

If MsgBox(Prompt:="Хотите ли Вы продолжить печать ?", _
Buttons:=vbYesNo, Title:="") = vbNo Then
Exit Sub
Else
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472228
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня и чудесного настроения!
Ребята,
Скажите пожалуйста, как мне кажется, вот эта операция: "Вставьте распечатанные листы в принтер для печати на обратной стороне" должна следовать после того как будет напечатана первая страница. А у меня енто сообщение выпадает сразу же, после нажатия нв кнопку печати.
И нельзя ли предусмотретьвключение/отключение печати с обратной стороны, непрсредственно в окне печати. Нпроимер при помощи OptionButton.
С уважением, автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472337
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
imho отследить, когда будут напечатаны страницы с первой стороны, легко можно только глазами и на слух :)
А по поводу option button - давайте файл с формой, добавим. Или лучше сразу форму с ним, добавим код :)
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472484
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Без проблем. С этим у меня сложностей не возникает. Вроди бы неплохо получается.
А относительно ОптионБутон, если можно сделать, чтобы пос умолчанию включался нижний "Отключить".И оставался включенным всегда. Даже после перезагрузки Винды.
Естественно, что кроме случая нажатия на верхний перекдючатель. Под именем "Включить"
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472523
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обработал твой оптион.
Код, который я давл выше, удалил - он там теперь никчему, да и вставлен был неправильно.
Там был смысл спрашивать перед печатью второй стороны - если пользователь соглашался, говорим "переверни листы" и печатаем...
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472535
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, можно сделать выбор на чекбоксе - меньше места займёт, всего один нужен.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472576
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Так что? Переделать форму.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472728
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это вопрос без вопросительного знака или приказ без восклицательного?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472752
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шутка. Хозяин-барин, тебе решать, я сперва так сделал:
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36472830
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Конечно же первое.Вопрос в виде просьбы.
Но я подумаю надо ли это делать. ВАедь это уже не суть важно. Если придумаю, то форму переделаю чуть позже, потому что сейчас отвлекают от ПК по другим делам службы.
А если у вас еще не пропал интерес, то еще на форме осталось не задеяствованы две кнопки.
Просмотр документа перед печатью и выбор печатанмой страницы или страниц. Без этого обойтись нельзя.
Это снова большущая просьба.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36473280
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С просмотром документов уже раньше разбирались - кнопку я подключил, но перед просмотром приходится форму закрывать, так что тут некрасиво получается, может вообще от просмотра отказаться?
Выбор страниц делаю, но пока не готово... сам первый раз в таких формах разбираюсь, думал кто другой уже выложит, посмотрю, но нет...
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36474085
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, доделал, получите...
Просмотр вроде тоже можно пользовать, правда форма в этом режиме мёртвая, но окно просмотра перематывается.
Добавил защиту от дурака-пользователя, если он укажет некорректное количество страниц - будут печататься все.
Если что в коде не идеально, не судите строго - сам первый раз в текстбоксах и спинбутонах на форме разбирался...
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36474960
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Доброго вам дня и приятных встреч с добрыми людьми!

!. «Если что в коде не идеально, не судите строго - сам первый раз в текстбоксах и спинбутонах на форме разбирался...»
Чего придумал, судить? А разве можно судить человека за то, что он изо всех сил и безоплатно старается тебе помочь? Если это допустимо, то это , как мне кажется, не по- людски. Противно и безбожно!!!
2. Далее. Извините меня непутящего за долгое молчание! Просто пол ночи вчера и вот пол дя сегодня лопатил форумы. И вот кажется нашел то, что требуется для просмотра. Установил. Вроди работает.
Но только для одного, конкретного листа. Посмотрите, пожалуйста, может у вас получится переделать его на всю книгу. Я еще до этого не дорос.
С уважением, автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36474999
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gleod,
А вот и сам файл с примером
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475281
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказывается, всё просто:

Private Sub CommandButton1_Click()
Me.Hide
ActiveWindow.SelectedSheets.PrintPreview
Me.Show
End Sub

Как было сказано в "подсказке", PrintPreview тормозит код, чего никто не ожидал!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475393
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно и так:

Private Sub CommandButton1_Click()
ActiveSheet.PageSetup.PrintArea = Range("A1:P6").Address
Me.Hide
ActiveSheet.PrintPreview
Me.Show
ActiveSheet.PageSetup.PrintArea = ""
End Sub

Но тогда на всех листах область печати будет одинаковая во время просмотра.
Если листов не много(т.е. пока не напрягает писать код), можно в зависимости от имени листа задавать свою область каждому.
Ещё можно область высчитывать динамически в зависимости от количества заполненных строк/столбцов.
А можно её вообще не задавать.
Выбирай в зависимости от задачи.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475700
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Просто, да не совсем!
ТЕХНИЧЕСКИЕ МОМЕНТЫ.
Далее. Листов в книге может быть много. На каждый месяц заводится отдельный лист с именем 1.2010, 2,2010 и так далее 12.2010. А если Ексель позволяет вводить больше листов тогда : 1.2011, 2.2011 и так далее, по каждому году.
Страниц в каждом листе, также может быть, сколько угодно. В зависимости от активности деятельности фирмы.

ЧТО МЫ ИМЕЕМ?
Например, первый ваш вариант, назовем его Печать _2.2,
Независимо от показания счетчиков страниц выводит на просмотр обе страницы. Стало быть и печатать будет все, что показывает.
А если нужно перепечатать, допустим, только одну страницу?
В торой ваш вариант, назовем его Печать_2-3, вообще, на Лист1 – в любом случае, выдает на просмотр только Страницу 2. А на Лист2 – выдает на просмотр все, не зависимо от показаний счетчиков.

ЧТО НАДО ПОЛУЧИТЬ НА ВЫХОДЕ.
1. Возможность просмотра и печати количества сираниц, указаных пользователем на счетчиках. По умолчанию – програма печатает все страницы (желательно).
2. Внутренний голос мне подсказывает что, целесообразно использовать: «… область высчитывать динамически в зависимости от количества заполненных строк/столбцовможно область высчитывать динамически в зависимости от количества заполненных строк/столбцов». Тогда появляется возможность сжатия страниц, если на последний из них, выводится меньше чем две строки.
3. А если : «… её вообще не задавать», тогда я просто не представляю себе конечный результат вывода страниц на печать. Из-за минимальных знаний ВБА.
Поэтому, исходите ПОЖАЛУЙСТА, из того, что проще и легче вам написать, но с максимальным учетом моих конечных требований.
И, пожалуйста, извиняйте мне мою назойливость!!!
С уважением к вам, автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475721
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю, что на просмотр обычно выводят все страницы (так в моих вариантах и должно быть, может косяк в Печать_2-3 просочился, посмотрю). Ну а если просматривать только то, что выбрал пользователь... надо думать, как лучше сделать, у меня готового кода нет.
Но вообще границы страниц пользователь может двигать, как хочет, они могут и сами скакать в зависимости от шрифта и ширины строк/колонок, даже не знаю, как лучше сделать...
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475725
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил Печать _2.2.new.rar - на просмотр выдаёт все листы.
В коде задумано просматривать всё, а печатать только выбранные страницы. Это точно не подходит?
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать умный макрос для печати определенных страниц из одной открытой книги?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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