powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать умный макрос для печати определенных страниц из одной открытой книги?
62 сообщений из 62, показаны все 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
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475726
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gleod"Установка колонтитулов с номером страницы"
Здесь, если можно,по детальнее, какая связь с моим вопросом? Я вроде бы о колонтитулах нигде не упоминал.Я просто не совсем верно понял ваше сообщение, в котором вы говорили про установку номеров страниц. Думал проблема именно в выводе номеров.
Прочитал ещё раз, понял что речь немного о другом.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475740
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так, я думаю, если надо выводить на просмотр только выбранные листы, то надо в коде жёстко задавать область печати каждого листа перед просмотром, т.е. например хочу 2-3 лист:
Код: plaintext
1.
ActiveSheet.PageSetup.PrintArea = Range("A56:P167").Address
а перед печатью задавать заранее задуманную область печати на весь лист.
Динамически трудно будет угадать с границами страниц.
Вообще эти таблицы будут меняться в границах, или это жёсткие формы?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475798
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
почему, если печатать будет заданую страницу, то сойдет. Думаю что это не суть важно.
И я забыл еще сказать, что количество столбцов тоже будет меняться. В зависимости, от печатаемой ведомости.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475837
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon PlayerGleod"Установка колонтитулов с номером страницы"
Здесь, если можно,по детальнее, какая связь с моим вопросом? Я вроде бы о колонтитулах нигде не упоминал.Я просто не совсем верно понял ваше сообщение, в котором вы говорили про установку номеров страниц. Думал проблема именно в выводе номеров.
Прочитал ещё раз, понял что речь немного о другом.

Вы имете ввиду то что програма сама будет нумеровать страницы? Так это просто супер.
Ну, а если нет, то не т оже страшно.
Одним словом, исходите из того, что проще в написании и удобнее в работе.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475844
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так оно сейчас заданные и печатает. Пользователь открыл просмотр (если надо), глянул, какие листы хочет печатать, выбрал их и печатает. Можно ещё перед печатью границы подтянуть, например на примере в первом листе всё на одну страницу уместить.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475900
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Так оно сейчас заданные и печатает. Пользователь открыл просмотр (если надо), глянул, какие листы хочет печатать, выбрал их и печатает. Можно ещё перед печатью границы подтянуть, например на примере в первом листе всё на одну страницу уместить.

" ... например на примере в первом листе всё на одну страницу уместить".
Так я этого и хотел. Но с ограничением, если на последний лист выводится , допустим не больше двух-трех строк. А если больше - тогда мне кажется, таблица будет тяжело читаться. Будет очень мелкий шрифт.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475933
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gleod,
А если : "Так оно сейчас заданные и печатает. Пользователь открыл просмотр (если надо), глянул, какие листы хочет печатать, выбрал их и печатает ..."
Тогда пусть так и остается. Я не могу проверит на практике потому, что принтер поломаный. За что дико извиняюсь!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475957
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня древний рабочий код, разбивает лист по страницам в зависимости от числа строк, по 31 на лист (т.е. 31 - 1 лист, 32 - уже 2). Сейчас может уже иначе бы сделал, но как идея -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
'k - количество генерируемых строк на определённом листе, высчитывается выше по коду
If k >  0  Then
Sheets("Лист1").Select
    If k >  16  Then
    x = k \  16 
        With ActiveSheet.PageSetup
        .FitToPagesWide =  1 
        .FitToPagesTall = x
        End With
    End If
  ActiveWindow.SelectedSheets.PrintOut Copies:= 1 , Collate:=True
End If

...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36475964
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если поломанный принтер - подключи виртуальный пдф. Думаешь я тут свою бумагу на тестах сейчас перевожу?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36476151
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Тогда куда еговставить нужно, этот код.
Как и не знаю как и куда вставить виртуальный пдф.И вообще. что это такое, тоже не знаю.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36476240
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,

но как идея
Наверняка хорошая! Но я еще очень слабо разбираюсь в кодах, поэтому и не могу правильно оценивать.
Отсюда, вам лучше знать, все ее преимущества и недостатки. А яч соглашусь с любой работающей.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36476412
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GleodDjon PlayerGleod"Установка колонтитулов с номером страницы"
Здесь, если можно,по детальнее, какая связь с моим вопросом? Я вроде бы о колонтитулах нигде не упоминал.Я просто не совсем верно понял ваше сообщение, в котором вы говорили про установку номеров страниц. Думал проблема именно в выводе номеров.
Прочитал ещё раз, понял что речь немного о другом.

Вы имете ввиду то что програма сама будет нумеровать страницы? Так это просто супер.
Ну, а если нет, то не т оже страшно.
Одним словом, исходите из того, что проще в написании и удобнее в работе.Да, приведённый мной код предназначен для автоматической нумерации страниц.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36476463
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,
Наверное уже перетрудился. В который раз заглядываю и немогу найти этот, очень полезный, код нумерации.Всемдоброй ночи! Иду спать и я.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36476732
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GleodHugo121,
Тогда куда еговставить нужно, этот код.
Как и не знаю как и куда вставить виртуальный пдф.И вообще. что это такое, тоже не знаю.
Ладно, про код пока вижу рано, тогда про принтер - есть программы например doPDF, PDFcreator_free, PdfFactory, Print2PDF и много других, которые печатают в файл. Если нет принтера (тем более, если вообще в системе нет принтера, то даже просмотр страницы невозможен, если я не путаю), это хороший вариант - можно например свои автоматически созданные документы распечатать позже на другой машине из *.pdf
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36477179
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GleodDjon Player,
Наверное уже перетрудился. В который раз заглядываю и немогу найти этот, очень полезный, код нумерации.Всемдоброй ночи! Иду спать и я.Код я писал тут.

В частности например так:
Код: plaintext
\nActiveSheet.PageSetup.CenterFooter = "&P" \'Центральный нижний колонтитул.\n
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36477211
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В колонтитул можно и ещё чего-нибудь написать - время распечатки, юзера, содержимое выбранных ячеек.
Ещё не забудьте про сквозные строки/столбцы, они тут тоже нужны, судя по задаче.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36480518
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,доброго вам весчера!
Наконец я добрался до ПК и могу вам отвечать. Пришлось срочно уехать в командировку по деласм службы.
Прошу прощения за свою тупость, но я не могу сообразить куда этот код надо вставить. И что еще, кроме нумерации страний он делает?
С уважением, автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36480553
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Речь о колонтитуле?
Код: plaintext
1.
2.
3.
4.
 For i = first To last Step  2 
    ActiveSheet.PageSetup.CenterFooter = "&P" 'Центральный нижний колонтитул.
    Application.ActiveSheet.PrintOut From:=i, To:=i, Copies:=cbNcopy.Value, Collate:=True
 Next
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36480585
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и для просмотра тоже продублируй
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub CommandButton1_Click()
Me.Hide
ActiveSheet.PageSetup.CenterFooter = "&P" & " Просмотр осуществляет " & Application.UserName
ActiveWindow.SelectedSheets.PrintPreview
Me.Show
End Sub
иначе колонтитул заполнится только при печати.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36482580
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Колонтитул - делаем иначе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Печать_вед()

With ActiveSheet.PageSetup
'  .LeftHeader = "&P" 'Левый верхний колонтитул.
'  .CenterHeader = "&P" 'Центральный верхний колонтитул.
'  .RightHeader = "&P" 'Правый верхний колонтитул.
'  .LeftFooter = "&P" 'Левый нижний колонтитул.
  .CenterFooter = "&P" 'Центральный нижний колонтитул.
'  .RightFooter = "&P" 'Правый нижний колонтитул.
End With

frmPrinter.Show
End Sub
Определяем колонтитулы только один раз, при нажатии на кнопку "Печать". Правда в этом варианте колонтитул задаётся только активному листу, возможно лучше задавать сразу всей книге, иначе при переходе по листам при открытой форме колонтитул будет только на листе, с которого запускалась форма.
Ещё форме не хватает выбора принтера - я тут на досуге попробовал добавить - наполовину получилось (дома работает, на работе нет :) ). Опыта в принтерах маловато...
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36482697
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Добрый день! У нас в Киеве он солнечный и , как для зимы, сравнительно теплый. Дай Бог и вам таког же. И такого же, солнечно-теплого, настроения на всю рабочую неделлю.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub Печать_вед()
With ActiveSheet.PageSetup
  .CenterFooter = "Страница " & "&P" & " из " & "&N" 'Центральный нижний колонтитул.
End With
   frmPrinter.Show
End Sub
3) Так сразу не скажу, надо пробовать, но что-то кажется, что код простым не будет.
4) В модуле дополнить код, который выполняется по клику на кнопке.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36483975
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал всё, кроме 3), проверьте, погоняйте. Как бонус добавил выбор принтеров.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36484337
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Good you day and all creature comfortses!
последний ваш вариант проверил в работе путеом создания листов с разным количечтвом страниц. Работает прекрасно. СПВСИБОООО вам большущее за дружескую помощь!!!!!!!
И два доп. вопроса.
1) А всьо таки, какая строка и какого макроса, создает запись у колонтитуле? Это нужно на случайЮ если захочется изменить содержимое колонтитула.
2) При копированни в другую книгу всех этих кодов (без их изменения) счетчик справаЮ прказывает на 2 страницы больше. В чем причина?
С уважением, автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36484376
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Поищи в коде модуля CenterFooter - вот там оно и есть! Да и тут пару постов выше тоже.
2) Код, который это делает - Function page(x As Range) в модуле. Код чужой, я раньше его скопировал в запасник, вот пригодился. Я стал его проверять, оказалось всегда показывает 1 страницу. Исправил повыкидывав половину, вроде стал работать, но вероятно не на 100%. Так что тут ничего больше сказать не могу... Может кто поопытнее поправит, у меня он работает корректно и на 6 страниц, и на 1...
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36485121
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обновление (касательно выбора принтеров) - как оказывается, есть разница между русским и английским Экселем и по этой части. Пока сделал так - если есть в последнем слове Excel.ActivePrinter "(", то ставим скобки, иначе ставим "on" без скобок... Если обнаружатся другие варианты, придётся переделывать.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36485470
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Доброго вам дня, а еще добродушных и улыбчивых собеседников!
Еще раз СПАСИБО! Возьму на воорожуние.
И скажите , пожалуйста, по картинкам на кнопках и др. элементах управления, в том числе и на самой форме, у вас че нить есть?
С уважениемЮ автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36485518
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не делал, но вот может пригодится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Как макросом добавить кнопку со своей картинкой. Я знаю как добавить кнопку написав номер значка  

А где у Вас эта картинка? В файле? Или на листе excel?

В любом случае, можно подгрузить картинку для значка из графического файла:


Код:

Function Add_Control_Ex(ByRef menu, ByVal B_Type As Integer, ByVal B_Face As Integer, _
                        ByVal On_Action As String, ByVal B_Caption As String, _
                        Optional ByVal Begin_Group As Boolean = False, Optional Tag As String = "") _
                        As CommandBarControl
    ' добавляет контролы в меню menu ' type=1 - это кнопка, type=4 - это комбобокс, 10 - popup
    On Error Resume Next
    Set Add_Control_Ex = menu.Controls.Add(B_Type, , ,  1 )
    With Add_Control_Ex
        If B_Face >  0  Then .FaceId = B_Face:
        .Tag = Tag: .OnAction = On_Action: .Caption = B_Caption: If Begin_Group Then .BeginGroup = True
    End With
End Function

Sub ФормированиеПанелиИнструментов()
    On Error Resume Next: Application.ScreenUpdating = False
    Application.CommandBars.Add(Name:="Размеры").Visible = True
    For i =  1  To  1000 : DoEvents: Next
    Dim ShapesCB As CommandBar:    Set ShapesCB = Application.CommandBars("Размеры")
    For Each co In ShapesCB.Controls: co.Delete: Next
    ShapesCB.Visible = True: ShapesCB.Controls( 1 ).BeginGroup = True

    Add_Control_Ex ShapesCB,  1 ,  23 , "OpenCommPred", "Открыть комм. предложение", True
    ПутьКФайлуКартинки = "E:\Excel\joda3.bmp"
    ShapesCB.Controls( 1 ).Picture = LoadPicture(ПутьКФайлуКартинки)
End Sub
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36485674
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Спасибо! Буду пробовать применить на практике.
И попутный вопрос.
Например, если я внедрил картинку через Свойства Picture.Будет ли она отображаться на другом ПК?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36485681
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не знаю.
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36485740
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Тогда высылаю вам файл с такими картинками. Посмотрите, пожалуйста у себя? Отображаются или нет и сообщите мне.
И второе. Когда то давно, я надыбал на У Винде или Офисе (уже не помню) на папку где хранятся усякие картинки. Вы случайно не знаете, где ее искать?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36486013
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Отображаются.
2) Insert->Picture->Clipart?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36486023
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2) C:\Program Files\Common Files\Microsoft Shared\Clipart\
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36486159
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
А у меня в 2003 этого Clipart\ прчему то нет?
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36492335
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo1211) Отображаются.
2) Insert->Picture->Clipart?Соответственно в русской версии Excel 2003 меню Вставка -> Рисунок -> Картинки.
После этого в правой части появится панель "Коллекция клипов".
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36492578
Gleod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Player,
Доброго вам дняи прекрасного отдыха!
Спасибо за подскаску. Но я имел в виду вот эти картинки: C:\Program Files\Microsoft Office\CLIPART\PUB60COR. Которые через свойство Picture можно устанавливать на кнопки.
С уважением, автор!
...
Рейтинг: 0 / 0
Как сделать умный макрос для печати определенных страниц из одной открытой книги?
    #36495812
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только не надо применять картинки bmp - от них эксель тормозит.
Надо gif или на худой конец jpg.

Перевести картинку очень просто в большинстве графических редакторов есть пункт в меню: ЭКСПОРТ.
Экспортируете BMP в GIF и будет вам щастье...И Меньше жрать памяти будет...
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать умный макрос для печати определенных страниц из одной открытой книги?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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