|
|
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Знатоки ВБА! Вот сочинил такой вот (см. в файле) код для печати. Как более продвинутую альтернативу тому - , что в имеется моей предыдущей теме : «Дописать макрос для печати листов Ексель». Поясняю! Предыдущий вариант, плох тем, что в нем нет возможности оставить окно печати на экране ПК после выхода из режима просмотра, печатаемого документа. А то, что я придумал сам, выводит на экран не одно, а сразу два окна печати. Что сильно достает пользователя. Но вернемся к альтернативному варианту, В нем я вроди бы все сделал правильно, однако макрос «cmdPrint_Click», ругается на строке : z = x.Parent.HPageBreaks.Count (см. в файле). Не догоняю почему? Может кто подскажет? И далее. Мне нужно чтобы он печатал конкретные листы этой книги. А я почему то не уверен, что он будет это делать. Потом, в случае если на вторую страницу выводится меньше двух строк, то согласитесь, что из-за одной строки печатать лишнюю страницу, простол глупо. Так вот, в таком случае, макрос должен сжать (выдав при этом предупреждение с кнопками «Да» или «Нет») таблицу так , чтобы эти строки переместились на первую страницу (в ручном режиме это можно сделать). И стал печатать только одну страницу. Но не автоматом. А в ручном режиме. То бишь, после выхода из режима просмотра и нажатия на кнопку печать. И так макрос должен поступать с каждой энной страницей, где возникает подобная ситуация. И было бы суперово, если бы перед печатью, можно было вручную задавать номера страниц, выводимых на печать. Примерно так, как в стандартном окне Винды. Это для случая, если , например, надо перепечатать не всю книгу, а лишь некоторые страницы конкретного документа. Вот такая супер сложная для меня задачка. Заранее СПАСИБО, за помощь в ее решении. С уважением, автор Темы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 16:23 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Gleod, Тут написал, что чтобы после предварительного просмотра не исчезало окно печати, надо нажимать кнопку Страница, а не Закрыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 16:50 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Djon Player, Установка колонтитулов с номером страницы. Нужно выбрать одну из 6-и строчек, которая больше подходит. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 16:57 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Gleod, На Код: plaintext Зато ругается, что переменная i не объявлена, а так-же на неверный код Код: plaintext не вдаваясь в подробности работы кода, я бы его поменял так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 17:05 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Ну и возможность отказаться от печати второй стороны : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 17:56 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Djon Player,доброго вам здоровя! ДЛя начала, спасибо за дельную подсказку по поводу Страница. И прошу прощения за мою невнимательность. В предыдущий файл просто больше не заглядывал. А оттносительно вашего ну очень полезного макроса "cmdPrint_Click". В целом - ест good! Но есть одно заамечание. Нет возможности отказа от печати с обратной стороны листа. Доработать бы. Тогда полный супер. "Установка колонтитулов с номером страницы" Здесь, если можно,подетальнее, какая связь с моим вопросом? Я вроди бы о уколонтитулах нигде не упоминал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 18:15 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Доработать бы - Hugo121Ну и возможность отказаться от печати второй стороны : If MsgBox(Prompt:="Хотите ли Вы продолжить печать ?", _ Buttons:=vbYesNo, Title:="") = vbNo Then Exit Sub Else ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 09:05 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня и чудесного настроения! Ребята, Скажите пожалуйста, как мне кажется, вот эта операция: "Вставьте распечатанные листы в принтер для печати на обратной стороне" должна следовать после того как будет напечатана первая страница. А у меня енто сообщение выпадает сразу же, после нажатия нв кнопку печати. И нельзя ли предусмотретьвключение/отключение печати с обратной стороны, непрсредственно в окне печати. Нпроимер при помощи OptionButton. С уважением, автор! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 12:51 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
imho отследить, когда будут напечатаны страницы с первой стороны, легко можно только глазами и на слух :) А по поводу option button - давайте файл с формой, добавим. Или лучше сразу форму с ним, добавим код :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 13:27 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Hugo121, Без проблем. С этим у меня сложностей не возникает. Вроди бы неплохо получается. А относительно ОптионБутон, если можно сделать, чтобы пос умолчанию включался нижний "Отключить".И оставался включенным всегда. Даже после перезагрузки Винды. Естественно, что кроме случая нажатия на верхний перекдючатель. Под именем "Включить" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 14:08 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Обработал твой оптион. Код, который я давл выше, удалил - он там теперь никчему, да и вставлен был неправильно. Там был смысл спрашивать перед печатью второй стороны - если пользователь соглашался, говорим "переверни листы" и печатаем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 14:23 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Кстати, можно сделать выбор на чекбоксе - меньше места займёт, всего один нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 14:26 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Hugo121, Так что? Переделать форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 14:38 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Это вопрос без вопросительного знака или приказ без восклицательного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 15:26 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Шутка. Хозяин-барин, тебе решать, я сперва так сделал: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 15:30 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Hugo121, Конечно же первое.Вопрос в виде просьбы. Но я подумаю надо ли это делать. ВАедь это уже не суть важно. Если придумаю, то форму переделаю чуть позже, потому что сейчас отвлекают от ПК по другим делам службы. А если у вас еще не пропал интерес, то еще на форме осталось не задеяствованы две кнопки. Просмотр документа перед печатью и выбор печатанмой страницы или страниц. Без этого обойтись нельзя. Это снова большущая просьба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 15:51 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
С просмотром документов уже раньше разбирались - кнопку я подключил, но перед просмотром приходится форму закрывать, так что тут некрасиво получается, может вообще от просмотра отказаться? Выбор страниц делаю, но пока не готово... сам первый раз в таких формах разбираюсь, думал кто другой уже выложит, посмотрю, но нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 18:10 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Вот, доделал, получите... Просмотр вроде тоже можно пользовать, правда форма в этом режиме мёртвая, но окно просмотра перематывается. Добавил защиту от дурака-пользователя, если он укажет некорректное количество страниц - будут печататься все. Если что в коде не идеально, не судите строго - сам первый раз в текстбоксах и спинбутонах на форме разбирался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 09:07 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Hugo121, Доброго вам дня и приятных встреч с добрыми людьми! !. «Если что в коде не идеально, не судите строго - сам первый раз в текстбоксах и спинбутонах на форме разбирался...» Чего придумал, судить? А разве можно судить человека за то, что он изо всех сил и безоплатно старается тебе помочь? Если это допустимо, то это , как мне кажется, не по- людски. Противно и безбожно!!! 2. Далее. Извините меня непутящего за долгое молчание! Просто пол ночи вчера и вот пол дя сегодня лопатил форумы. И вот кажется нашел то, что требуется для просмотра. Установил. Вроди работает. Но только для одного, конкретного листа. Посмотрите, пожалуйста, может у вас получится переделать его на всю книгу. Я еще до этого не дорос. С уважением, автор! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 13:44 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Gleod, А вот и сам файл с примером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 13:53 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Оказывается, всё просто: Private Sub CommandButton1_Click() Me.Hide ActiveWindow.SelectedSheets.PrintPreview Me.Show End Sub Как было сказано в "подсказке", PrintPreview тормозит код, чего никто не ожидал! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 14:57 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Можно и так: Private Sub CommandButton1_Click() ActiveSheet.PageSetup.PrintArea = Range("A1:P6").Address Me.Hide ActiveSheet.PrintPreview Me.Show ActiveSheet.PageSetup.PrintArea = "" End Sub Но тогда на всех листах область печати будет одинаковая во время просмотра. Если листов не много(т.е. пока не напрягает писать код), можно в зависимости от имени листа задавать свою область каждому. Ещё можно область высчитывать динамически в зависимости от количества заполненных строк/столбцов. А можно её вообще не задавать. Выбирай в зависимости от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 15:24 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Hugo121, Просто, да не совсем! ТЕХНИЧЕСКИЕ МОМЕНТЫ. Далее. Листов в книге может быть много. На каждый месяц заводится отдельный лист с именем 1.2010, 2,2010 и так далее 12.2010. А если Ексель позволяет вводить больше листов тогда : 1.2011, 2.2011 и так далее, по каждому году. Страниц в каждом листе, также может быть, сколько угодно. В зависимости от активности деятельности фирмы. ЧТО МЫ ИМЕЕМ? Например, первый ваш вариант, назовем его Печать _2.2, Независимо от показания счетчиков страниц выводит на просмотр обе страницы. Стало быть и печатать будет все, что показывает. А если нужно перепечатать, допустим, только одну страницу? В торой ваш вариант, назовем его Печать_2-3, вообще, на Лист1 – в любом случае, выдает на просмотр только Страницу 2. А на Лист2 – выдает на просмотр все, не зависимо от показаний счетчиков. ЧТО НАДО ПОЛУЧИТЬ НА ВЫХОДЕ. 1. Возможность просмотра и печати количества сираниц, указаных пользователем на счетчиках. По умолчанию – програма печатает все страницы (желательно). 2. Внутренний голос мне подсказывает что, целесообразно использовать: «… область высчитывать динамически в зависимости от количества заполненных строк/столбцовможно область высчитывать динамически в зависимости от количества заполненных строк/столбцов». Тогда появляется возможность сжатия страниц, если на последний из них, выводится меньше чем две строки. 3. А если : «… её вообще не задавать», тогда я просто не представляю себе конечный результат вывода страниц на печать. Из-за минимальных знаний ВБА. Поэтому, исходите ПОЖАЛУЙСТА, из того, что проще и легче вам написать, но с максимальным учетом моих конечных требований. И, пожалуйста, извиняйте мне мою назойливость!!! С уважением к вам, автор! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 17:01 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Я думаю, что на просмотр обычно выводят все страницы (так в моих вариантах и должно быть, может косяк в Печать_2-3 просочился, посмотрю). Ну а если просматривать только то, что выбрал пользователь... надо думать, как лучше сделать, у меня готового кода нет. Но вообще границы страниц пользователь может двигать, как хочет, они могут и сами скакать в зависимости от шрифта и ширины строк/колонок, даже не знаю, как лучше сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 17:10 |
|
||
|
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
|
|||
|---|---|---|---|
|
#18+
Проверил Печать _2.2.new.rar - на просмотр выдаёт все листы. В коде задумано просматривать всё, а печатать только выбранные страницы. Это точно не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 17:13 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36470749&tid=2178424]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 331ms |

| 0 / 0 |
