Страницы: 1
RSS
Настройка области печати макросом
 
Доброго дня!

Имеется следующая задача.
На листе расположены данные допустим в 120 строк и в 100 столбцов.
В зависимости от условий строки могут скрываться до 40 или 80 или отображаться все 120.
Как макросом можно сделать следующее:

1. Если строк 60 или 80, то осуществить печать на одном листе. Установить необходимые значения полей.

2. Если строк 120, то вывод на печать осуществлять на двух листах с указанием точки разрыва страницы. Установить необходимые значения полей.
На втором листе поля должны быть зеркальные. Перед печатью второго листа должно быть приглашение пользователю о необходимости разместить лист для печати и нажать "Ок" для продолжения печати(это для принтеров не поддерживающих двухстороннюю печать)

Ну и разумеется все указанные столбцы должны умещаться по ширине на одну страницу.

Можно ли и как это сделать?
Помогите пожалуйста!

Заранее спасибо!

P.s. Пытался это посмотреть записывая макрорекордером, но там столько всего пишется....  
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Здравствуйте! Приложите файл с примером, т.к. немного смущает
Цитата
Artem1977 написал:
100 столбцов.
которые должны быть на одной странице
 
Это надо полностью переделывать лист. Содержит конфиденциальную информацию.
Просто ширина столбцов очень маленькая, размером в 1 (при стандарте 8,38).
Сделано было для удобства рисования разных таблиц имеющих разные ширины столбцов.
А дальше идёт объединение ячеек.
Т.е. визуально этот диапазон полностью виден на экране


Пускай будет так. Делал на скорую руку:
Изменено: Artem1977 - 31.05.2017 09:21:04
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал:
Установить необходимые значения полей.
А как узнать, какие это - "необходимые"? И не совсем понятно, зачем нужен макрос для настройки полей - это же все есть в стандартных настройках параметров страницы.  Зеркальные поля стандартными средствами в Excel сделать нельзя, это не Word. Сделал макрос, который в случае 120 строк создает второй лист, на который выводятся строки с 81 по 120. После распечатки этот лист нужно будет удалять, т.к. в следующий раз вновь создаваемому для печати листу будет присваиваться такое же имя, и возникнет ошибка в работе макроса.
 
Цитата
_Igor_61 написал:
После распечатки этот лист нужно будет удалять...
Игорь, поручите это макросу )
 
Там на листе для этого кнопка есть, я подумал, что сразу удалять не стоит - вдруг распечатают и какую-то ошибку обнаружат, нужно будет исправить  :)  
 
Что-то это как-то через чур.

Я вижу принцип работы такого макроса так:
если у нас одно значение строк, то:
1. Определить область печати.
2. Указать что печатаем на 1 стр в ширину и в высоту
3. Указать размер полей печати(2 слева, и по 1 сверху, снизу, справа)
если другое количество строк, то:
1. Определить область печати:
2. Указать что печатаем на 1 стр в ширину и 2 в высоту
3. Указать где у нас разделитель страниц
4. Указать размер поля для 1 страницы(например 2 слева, и по 1 сверху, снизу, справа)
5. Перед печатью второго листа сделать запрос на продолжение печати и установить для второго листа другие значения полей, зеркальные(т.е. 2 справа и по 1 слева, сверху и снизу)

Наверное придётся прикручивать то, что пишет макрорекордер.

Только вопрос встаёт, можно ли вставить перед печатью второго листа запрос на подтверждение продолжения печати?  
Изменено: Artem1977 - 01.06.2017 04:19:33 (добавление)
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал:
Если строк 60 или 80, то осуществить печать на одном листе. Установить необходимые значения полей
Выполнено. Для установки значений полей есть специальная кнопка, которая выводит на форму для установки этих значений. Кнопку видели?
Цитата
Artem1977 написал:
Если строк 120, то вывод на печать осуществлять на двух листах с указанием точки разрыва страницы. Установить необходимые значения полей.
Выполнено. Если строк 120, создается второй лист со строками с 81 по 120 Для печати первого листа достаточно оставить строки с 1 по 80 помощью уже готового Вашего макроса в модуле листа . После нажатия на кнопку "Печать" выводится msgbox с сообщением о том, что будет создан второй лист и с указанием о строках, которые будут выведены на печать (81-120) со второго листа.  Или "указанием точки разрыва страницы" должно быть что-то другое? Нарисованная стрелочка, показывающая на 80-ю строку?
Цитата
Artem1977 написал:
На втором листе поля должны быть зеркальные
Выполнено
Цитата
Artem1977 написал:
Перед печатью второго листа должно быть приглашение пользователю о необходимости разместить лист для печати и нажать "Ок" для продолжения печати
Перед печатью открывается окно предварительного просмотра, в котором можно увидеть именно то, как будет выглядеть распечатанный лист и при необходимости изменить настройки страницы или принтера. Если этого недостаточно, можно добавить msgbox "Необходимо разместить лист для печати", вот только где его размещать-то? Об этом не было сказано, поэтому он размещается на вновь созданном листе.
Цитата
Artem1977 написал:
все указанные столбцы должны умещаться по ширине на одну страницу.
Выполнено.
Цитата
Artem1977 написал:
Наверное придётся прикручивать то, что пишет макрорекордер
Так кто же против? Прикручивайте
Цитата
Artem1977 написал:
можно ли вставить перед печатью второго листа запрос на подтверждение продолжения печати?
Можно
З.ы. Все то, что написано в сообщении #7 должно было быть в сообщении #1
Изменено: _Igor_61 - 01.06.2017 07:50:26
 
Цитата
Artem1977 написал: Указать где у нас разделитель страниц
И где у нас разделитель страниц в таком случае?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Artem1977 написал:
Перед печатью второго листа...
Может быть второй страницы?
 
Да, конечно. Второй страницы.
Повторюсь. То что предложено - совершенно излишне. Дополнительные кнопки, копирование на новый лист, удаление... Проще должно быть.

Вот что предлагает макрорекордер для одного листа:
Скрытый текст

а вот что должно быть когда два листа:
Скрытый текст
Вот этот код упростить бы и счастья полные штаны :D
И добавить чтобы при печати перед второй страницей выдавалось запрос на подтверждение продолжения печати.
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал:
а вот что должно быть когда два листа:
Так зеркальные поля на втором листе уже не нужно? В вашем коде одинаково -что на первом, что на втором.
И еще раз:
Цитата
Artem1977 написал:
Установить необходимые значения полей.
Каким образом? В штатном окне настройки параметров страницы? Или просто фиксированно в коде макроса, чтобы не было возможности их менять? Вы же это не поясняете.
Изменено: _Igor_61 - 01.06.2017 09:26:35
 
Цитата
_Igor_61 написал: зеркальные поля на втором листе уже не нужно
Это желательно, но необязательно. В конце концов если это усложняет код, то можно просто на обоих страницах сделать их побольше и одинаковыми(чтобы дырокол не в тексте делал дырки  :D )

Цитата
_Igor_61 написал: Каким образом?
в коде макроса. чтобы если юзер изменил чего, то на вывод это не распространилось.

Ещё чего заметил при работе этого макроса.
1. У меня в нижнем колонтитуле должно печататься "Страница 1 из 2". А при работе макроса происходит урезание до "Страница 1 и".
2. В ячейках имеются примечания. Так вот если макросом я делаю настройку печати, то несмотря на запрет всё равно происходит печать на дополнительном листе
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал:
Это желательно, но необязательно
??? Если не обязательно, для чего об этом нужно было говорить?
Цитата
Artem1977 написал:
в коде макроса. чтобы если юзер изменил чего
Вообще-то можно было сразу об этом сказать
Цитата
Artem1977 написал:
совершенно излишне. Дополнительные кнопки,
А по какому событию тогда должен запускаться макрос? Об этом тоже ни слова. В следующий раз , если будете создавать новую тему, подумайте хорошенько о всех условиях, прежде чем сформулировать очередную задачу, чтобы не появлялось потом все новых и новых условий, и не нужно было бы эти условия изменять. Удачи!
 
Прошу прощения. Мне казалось что я объяснил всё достаточно точно.
Я согласен с тем, что любой человек понимает задачу по-своему. Вы её увидели в одном свете, я её вижу в другом. Не надо обижаться.

Цитата
_Igor_61 написал:
??? Если не обязательно, для чего об этом нужно было говорить?
Потому и говорилось. Но если это сильно усложняет код - не обязательно.

А запускаться он должен тогда когда человек нажимает на кнопочку "Печать" в самой программе, а не через кнопки на листе.
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Юрий М написал:
Может быть второй страницы?
Цитата
Artem1977 написал:
Да, конечно. Второй страницы.
И снова про листы:
Цитата
Artem1977 написал:
вот что должно быть когда два листа
Вы уж определитесь - листы или страницы. Возможно, в том числе и из-за этого, Игорь в своём варианте пошёл в сторону двух ЛИСТОВ.
 
Цитата
Юрий М написал:
Вы уж определитесь - листы или страницы. Возможно, в том числе и из-за этого, Игорь в своём варианте пошёл в сторону двух ЛИСТОВ.

Простите великодушно! Путаюсь с этим я.
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Страницы: 1
Читают тему
Наверх