Ярослав Чикал Пользователь Сообщений: 57 |
#1 13.07.2017 15:28:41 Нашёл код для печати. Адаптировал под себя. И теперь два вопроса: Принципиально важно, чтобы оба листа уходили распечатываться в дуплексе принтера.
|
||
Sanja Пользователь Сообщений: 14838 |
Про двустороннюю печать было несколько (десятков) тем на форуме. ПОИСК FOREVER! Согласие есть продукт при полном непротивлении сторон. |
Sanja, |
|
Ярослав Чикал Пользователь Сообщений: 57 |
#4 14.07.2017 06:41:26
Почитал об этом, понял, что на офисах с 2003 по 2010 включительно двусторонняя печать проблема вселенского масштаба.
А вот два листа как выдать разом? Изменено: Ярослав Чикал — 14.07.2017 06:42:21 |
||||
RAN Пользователь Сообщений: 7091 |
#5 14.07.2017 08:32:25
Изменено: RAN — 14.07.2017 08:33:16 |
||
Ярослав Чикал Пользователь Сообщений: 57 |
#6 14.07.2017 13:24:44 RAN, благодарю, это работает, =)
Я удивлён. Оказывается, кода, чтобы распечатать надо меньше, чем я думал. Даже такой маленький код отправил задание на печать:
Однако, это не то. Дело в том, что эта команда, как выделение двух листов, и их совместная печать. Эксель сначала печатает первый лист, как отдельное задание, затем второй. А если включить в свойствах печати дуплекс, то происходит странное: Первый лист идёт на дуплекс. В первый проход при этом ничего не печатается, а лист печатается только после дуплекса. Затем идёт второй лист, но не на дуплекс, а прямиком. Это не то. Мне нужно, чтобы два листа были соединены в одном задании, чтобы одни настройки печати применялись к обоим, и первый лист (каким бы он по счёту не был) печатался, как первый, а следующий как второй. |
||||
RAN Пользователь Сообщений: 7091 |
Вариант 1 (посложней) |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#8 14.07.2017 14:15:01 Доброе время суток.
Получаете нечто вроде «\servernameprintername (Ne03:)»
Это получается из-за того, что каждый лист в общем-то имеет собственные настройки печати. |
||||||
Ярослав Чикал Пользователь Сообщений: 57 |
#9 14.07.2017 14:49:58 Андрей VG, Не поможет, ибо не решена проблема объединения двух листов в одно задание печати.
Это возможно будет проделать нажатием одной кнопки? |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#10 14.07.2017 23:46:21
Только что проверил на домашнем принтере, который позволяет установить двустороннюю печать. Таблица Листа1 напечаталась на одной стороне, таблица Листа2 на другой. Задание печати было одно из двух страниц, скриншот прикладываю. Прикрепленные файлы
Изменено: Андрей VG — 14.07.2017 23:50:50 |
||
Ярослав Чикал Пользователь Сообщений: 57 |
#11 15.07.2017 08:42:55
Похоже =) |
||
Ярослав Чикал Пользователь Сообщений: 57 |
#12 17.07.2017 15:59:24
Нет, похоже гранаты другой системы. Сделал копию принтера. Проверил имя принтера, как вы указали:
Прописал в свойства этого принтера дуплекс, пустил на печать ваш образец — он мне выдал листы на дуплекс, да только перевернул не понятно как. Потом отправил мой документ — его по старинке: сперва лист с формой на дуплекс отправил, и на одной строное форму отпечатал, а на второй ничего. Затем второй лист формы отправил, и тот пошёл без дуплекса. Два листа на одном листе опять не получились.
А печатал он по факту Первый лист и третий. Кстати, указание здесь конкретного принтера не помогло, пока я этот самый принтер не сделал по-умолчанию, что как бы не правильно. Прикрепленные файлы
Изменено: Ярослав Чикал — 17.07.2017 16:11:28 |
||||||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
Да, похоже таки гранаты |
Ярослав Чикал Пользователь Сообщений: 57 |
#14 18.07.2017 08:16:19
Возможно позже, когда сделаю форму с применением UserForms получится. А у меня другая идея. Быть может, проблема у меня из-за сложного устройства документа. Если выводить макросом на печать из нового документа, то быть может будет отправляться на дуплекс. Значит, макрос стоит дополнить копированием листов ТТН_1 и ТТН_2 в новый временный документ, чтобы распечатка выполнялась оттуда. Вот нашёл пример:
А вот я попытался прикрутить, но как и следовало ожидать, нужных ключей не оказалось:
Изменено: Ярослав Чикал — 18.07.2017 08:57:33 |
||||||
Ярослав Чикал Пользователь Сообщений: 57 |
#15 24.07.2017 09:01:15 Сделал рабочий код, который создаёт новую книгу, добавил рабочий код, который отправляет на печать, и на выходе получил ошибку.
Прикрепленные файлы
Изменено: Ярослав Чикал — 24.07.2017 09:01:35 |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#16 24.07.2017 09:13:32 Доброе время суток.
У Application нет коллекции Workbook, только Workbooks |
||
Ярослав Чикал Пользователь Сообщений: 57 |
#17 24.07.2017 12:57:16
Благодарю! |
||
Ярослав Чикал Пользователь Сообщений: 57 |
#18 24.07.2017 13:21:41 Андрей VG,
А, нашёл, пропустил я PageSetup:
Только установка альбомной ориентации не помогла — печатает по прежнему, как книжную (переворачивает по большему краю). Игрался с настройкой на принтере, Альбомную ставил с поворотом и с переворотом, Книжную ставил с поворотом и с переворотом — ничего не помогает Какие есть идеи, как заставить переворачивать по меньшему краю? (кроме настройки принтера) Изменено: Ярослав Чикал — 24.07.2017 14:35:09 |
||||
Ярослав Чикал Пользователь Сообщений: 57 |
#19 24.07.2017 15:41:50 ЗАРАБОТАЛО! ИТОГ:
Изменено: Ярослав Чикал — 02.08.2017 13:18:36 |
|||
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2010-01-06 16:24:05
- Kuryachev
- Гость
Тема: Excel/VBA: Установка двухсторонней печати (Duplex print)
Пожалуйста помогите! Возможно ли с помощью кода VBA установить/снять двухсторонюю печать листа Excel. Если нет — то как открыть диалог Печать/Свойства.
2 Ответ от alexii 2010-01-06 19:01:42
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Kuryachev, в каком Excel такое есть? В 2003 — нет.
3 Ответ от max7 2010-01-07 06:53:15 (изменено: max7, 2010-01-07 07:03:54)
- max7
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Нет, дуплекс можно указать в настройках принтера (не в excel’е) http://office.microsoft.com/en-us/word/ … 71033.aspx
Есть способ включения/выключения дуплекса http://www.mrexcel.com/forum/showthread.php?t=59285
Возможно вам будет интересен этот вариант (как альтернатива) http://www.vbforums.com/showpost.php?p= … ostcount=1
4 Ответ от alexii 2010-01-07 08:13:56
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Коллега, как раз этот, приведённый Вами, пример относится именно к возможностям самого приложения (WinWord), а не к настройкам драйвера принтера . А за ссылки — спасибо.
5 Ответ от max7 2010-01-07 13:16:24
- max7
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Настройки драйвера/принтера специфичны для конкретного драйвера/принтера, но есть возможность включить (в частности) дуплекс через winapi через структуры свойств драйвера/принтера. Я могу ошибаться, но если принтер поддерживает дуплекс, и он включён в настройках драйвера, то в диалоге печати появляется чекбокс «двухсторонняя печать», и по-моему, это «фича» не доступна из VBA.
6 Ответ от alexii 2010-01-07 18:40:10
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
OFF: max7, как раз для WinWord’а данный флажок обрабатывается им самим безо всякого участия драйвера принтера (что, конечно, не отменяет возможность задействовать не его, а возможность двусторонней печати через сам драйвер принтера, если тот поддерживает такую возможность). В данном случае, для WinWord’а это:
Application.PrintOut ManualDuplexPrint:=True
Печатается одна сторона листов (нечётная), затем он просит вынуть/повернуть/вставить листы, затем печатается вторая сторона листов (чётная).
7 Ответ от max7 2010-01-07 20:31:00
- max7
- Участник
- Неактивен
- Рейтинг : [0|0]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
alexii пишет:
Печатается одна сторона листов (нечётная), затем он просит вынуть/повернуть/вставить листы, затем печатается вторая сторона листов (чётная).
Ну это не дуплекс, это насмешка какая-то. Я предпочитаю управлять двусторонней печатью «в ручную»: печатаю нечётные, затем выдаю диалог вроде «переверните/продолжать/отмена», печатаю чётные, и т.п.
P.S.: Самое интересное (я немного изучал это вопрос), что при «прямой печати» на принтер/спуллер (форматы к PCL, PostScript, и т.д. смотря какой поддерживает принтер, либо эмулятор в драйвере) в «текущем сеансе печати» задавать режимы печати очень просто (в winapi есть специальные методы ). Для PCL это по сути однобайтовая команда, для PS — вызов процедуры.
8 Ответ от alexii 2010-01-07 21:25:21
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
max7 пишет:
Я предпочитаю управлять двусторонней печатью «в ручную»: печатаю нечётные, затем выдаю диалог вроде «переверните/продолжать/отмена», печатаю чётные, и т.п.
Оно именно так и есть.
Я тоже как-то делал для себя под Access’ом, только чуть иначе: из отчёта формата A5 делал брошюру на листах A4, дабы можно было потом просто сложить пополам и скрепить. Так сказать четырёхсторонняя печать — нужно было трижды поворачивать листы. Было весьма весело, но всё-таки сделал и потом печатал.
9 Ответ от dsb 2010-01-08 09:32:22
- dsb
- Разработчик
- Неактивен
- Рейтинг : [0|0]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Насколько я знаю, если на принтере сконфигурировать опцию duplex=on, то он все задания по-умолчанию будет печатать в дуплексе. Может лучше ориентироваться на этот вариант?
10 Ответ от alexii 2010-01-08 11:01:21
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Конечно. Осталось выяснить, это ли самое имел в виду автор темы, або что иное .
11 Ответ от smaharbA 2010-05-28 08:55:34
- smaharbA
- Разработчик
- Неактивен
- Рейтинг : [0|0]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Эта же проблема возникла давее как вчера
имеем книгу со 125 листами на каждом по 4 печатных страницы — как включить для каждого двухстороннюю печать ?
или усложним — как при ранее настроенных в ручнуюю свойствах в параметрах страницы изменить часть листов на двухстороннюю печать, часть на одностороннюю ?
Я конечно далек от мысли… (с)
12 Ответ от Kuryachev 2010-06-08 13:38:30
- Kuryachev
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Я разработал код, но сразу хочу сказать что он кривоват, поскольку для Экселя ничего в VBA под дуплекс не разработано(не могу сказать за Офис 2010 есть ли там какие-то добавления). А по сему как-то вот так:
Sub Duplex() 'установка двухсторонней печати
Dim prntr As String
prntr = "rundll32 printui.dll,PrintUIEntry /e /n " & Chr(34) & Printer & Chr(34) 'справка в C:WindowsSystem32printui.exe
Shell prntr, vbNormalFocus '
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "+{TAB}{RIGHT}{RIGHT}%y", True 'данную строку необходимо подгонять под конкретный принтер методом тыка
End Sub
Для меня также важен код для определения поддержки (или нет) дуплекса используемым принтером.
Заранее благодарен.
13 Ответ от Medeg1971 2010-08-16 08:39:19
- Medeg1971
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Всем доброго времени суток!
Уже месяц бьюсь пальцами об «клаву» по этой же теме, и ничего не придумал лучше ниже следующего:
Перед тем как выводить на печать в дуплексе из Екселя, необходимо создать два файла на диске «C:», которые будут содержать все настройки принтера.
Первый будет содержать настройки принтера по умолчанию, а второй настройки для печати в дуплексе.
Первый файл «Default.dat» можно создать сразу нижеследующей строкой из любого командера или в CMD.EXE, если принять
во внимание что принтер и так настроен по умолчанию: «C:WindowsSystem32printui.exe /Ss /n «Имя принтера» /a «C:Default.dat».
Имя принтера — принтер по умолчанию, например: HP LaserJet 2200 Series PCL 5.
Перед созданием второго — «Duplex.dat», сначала необходимо зайти в настройки принтера и включить дуплекс в двух закладках — «Общие» -> «Настройка…» и
«Дополнительно» -> «умолчания…».
Обе панели должны быть настроены одинаково, только в этом случае обеспечивается надежная печать в дуплексе.
Затем нижеследующей строкой в CMD.EXE сохраняется второй файл настроек принтера:
«C:WindowsSystem32printui.exe /Ss /n «Имя принтера» /a «C:Duplex.dat».
Теперь можно написать макрос который будет вызывать программу, с помощью которой будут меняться настройки принтера на дуплекс, затем печать и возврат принтера
в исходное состояние.
Sub DuplexPrint()
Dim PrnName As String
' Чтобы не думать в дальнейшем какой принтер используется по умолчанию,
' получаем его имя в PrnName.
PrnName = Application.ActivePrinter
' Получается, к примеру, принтер по умолчанию: "HP LaserJet 2200 Series PCL 5 (LPT1:)".
' В названии принтера присутствуют лишние данные: " (LPT1:)", следующим действием вычисляем позицию последнего пробела и
' убираем паразитные " (LPT1:)" из названия принтера.
PrnName = Left(PrnName, InStrRev(PrnName, " ") - 1)
' Теперь запускаем исполняемую программу Windows rundll32 c библиотекой printui и заранее подготовленными
' параметрами принтера в файле "Duplex.dat" для печати в дуплексе.
Shell "rundll32 printui.dll,PrintUIEntry /Sr /n " & Chr(34) & PrnName & Chr(34) & " /a " & Chr(34) & "C:Duplex.dat" & Chr(34), vbNormalFocus
' Здесь как раз и пригодилось имя принтера по умолчанию т.к. данная прога автоматом его не определяет.
' Полный список команд этой проги можно посмотреть запустив "C:WindowsSystem32printui.exe".
' Чтобы настройки успели записаться в дрова принтера нужно сделать небольшую паузу перед дальнейшей
' печатью. Как правило 1 сек. достаточно.
Application.Wait (Now + TimeValue("0:00:01"))
' Далее идет печать листов с использованием дуплекса.
ActiveWorkbook.Sheets(Array("Лист1", _
"Лист2")).PrintOut copies:=1
' И наконец возвращаем первоначальные настройки принтера заранее подготовленым файлом "Default.dat".
Shell "rundll32 printui.dll,PrintUIEntry /Sr /n " & Chr(34) & PrnName & Chr(34) & " /a " & Chr(34) & "C:Default.dat" & Chr(34), vbNormalFocus
' Кому нравится чтобы во время печати мелькали черные окна командной строки, может после функции Shell вместо
' "rundll32 printui.dll,PrintUIEntry ***"
' написать следующее:
' "CMD /c C:WindowsSystem32printui.exe ***"
End Sub
Выше приведенный макросовый изврат является дороботкой макроса написаного «Kuryachev»-ым (да, простит меня автор).
Отличие заключается в отсутствии необходимости писать в макросе конкретный принтер и подгонять параметры включения принтера в дуплекс
методом тыка, что для многих может стать «камнем предкновения».
Также можно подготовить файлы настроек принтера для любых других случаев печати из Екселя, например: режим брошюры.
Тем не мение, данный способ остается извратом, так как:
— меняет настройки самого драйвера принтера, а не Екселя
— необходимо держать на диске файлы настроек принтера
— для работоспособности макроса необходимо предварительно создать эти файлы настроек
— нельзя перенести макрос на другой комп и сразу работать (например: отправить по почте готовую таблицу пользователю
не объяснив как создать и куда положить файлы настроек)
— нельзя определить поддерживает ли вообще принтер дуплекс.
А, мелкософту за это ОГРОМНЫЙ -М-И-Н-У-С-.
14 Ответ от Bagir 2010-10-11 14:44:46
- Bagir
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Тоже давно ищу способ. Нашел замечательный такой пример: Duplex Printing — MrExcel Message Board. Отлично работает. Красиво оформлен и даже обработка ошибок. Похоже умелые руки его делали .
строку:
strvbPrinter = Left$(strPrinter, 24)
заменить на:
strvbPrinter = Left(strPrinter, InStrRev(strPrinter, " ") - 1)
чтобы нормально отрезать хвостик от имени принтера, полученного с помощью Application.ActivePrinter.
Но фишка в следующем: Переключает дуплекс то он отлично, но Excel зараза помнит с какими настройками при открытии он этот принтер взял. То же самое наблюдается и в уже предоставленных тут примерах. То есть чтобы понять, можно отбросить макросы в сторону.
Открываем Excel
делаем файл -> Печать
Смотрим настройки принтера
Смотрим как выставлен дуплекс
Далее ничего не изменяя закрываем настройки.
Давим кнопку «Пуск» -> Принтеры и факсы
Открываем свойства принтера и меняем дуплекс.
Закрываем с сохранением. (именно это и делают все найденные мною примеры включая этот)
Открываем диалог печати в Excel и смотрим свойства принтера — Дуплекс.
Нашего переключения, которое было сделано через «Принтеры и факсы» мы не видим. То есть Excel запомнил состояние принтера при старте.
Как бы научить его считать настройки принтеров заново, тогда бы модуль был на все 100% рабочий, и управлять дуплексом из VBA было бы реально.
15 Ответ от Bagir 2010-10-11 15:18:07
- Bagir
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Вот еще вариант переключения дуплекса с использованием DLL: VBA, office, VBS or shell duplex printing — VBForums.
Но та же проблема: Переключение можно увидеть в свойствах принтера через Пуск->Принтеры и факсы, но в свойствах принтера, вызванных через диалог печати Excel, эти переключения не видны.
16 Ответ от smaharbA 2010-10-11 17:22:20
- smaharbA
- Разработчик
- Неактивен
- Рейтинг : [0|0]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
не все так просто, но ексель это может, нужно узнать ДиСи окна и дальше пойдет
Я конечно далек от мысли… (с)
17 Ответ от Bagir 2010-10-11 19:55:51
- Bagir
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
В общем задача решена с горем пополам, а я уж было и не верил в боле менее приемлемый вариант. Менять настройки у принтера, выбранного для печати т.е. Application.ActivePrinter бес толку. Excel все равно помнит свои параметры принтера. Вывод: Выбираем другой принтер, меняем у нужного, и выбираем его. Тогда настройки будут такими, какие в этот момент в памяти драйвера.
На данный момент есть два примера. Один очень короткий с использованием сторонней dll, другой увесистый, но полностью на VB. Оба примера не оставляют паразитных черных окон и прочей чешуи. Но минус у них общий. При работе VBA изменяются параметры драйвера принтера, т.е. переключение дуплекса идет в нем. Если в этот момент работают другие проги, и для них это критично, то вероятно это решение не подойдет. Но немного разгоню тучи. Можно сделать таким образом, чтобы первоначальное состояние настройки возвращалось после печати.
18 Ответ от alexii 2010-10-11 22:25:37
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Bagir, прочтите справку по BBCode и используйте теги. Я поправил Ваши посты.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
1 |
|
Excel 22.05.2021, 11:43. Показов 6445. Ответов 19
Здравствуйте. Хочу привязать к кнопке печать макрос для печати два листа но одной бумаге с функцией Переворачивать страницы относительно короткого края Файл во вложении
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
22.05.2021, 11:43 |
19 |
810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
|
22.05.2021, 12:33 |
2 |
И в чем вопрос? ПКМ по кнопке — Назначить макрос — пишем/выбираем имя макроса. А в нем уже необходимый код.
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
23.05.2021, 13:58 [ТС] |
3 |
Zeag, Мне нужен необходимый код
0 |
ᴁ® 3069 / 1735 / 361 Регистрация: 13.12.2016 Сообщений: 5,937 Записей в блоге: 4 |
|
23.05.2021, 14:27 |
4 |
Мне нужен необходимый код Еще пару одноименных тем и ваша настойчивость будет возграждена баном!
0 |
810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
|
23.05.2021, 14:37 |
5 |
У вас пустой лист. Откуда знать, какой диапазон и какие листы печатаются? «Нет ТЗ — результат ХЗ» (с)
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
23.05.2021, 20:57 [ТС] |
6 |
Zeag, Зачем вы всё усложняете ? Вы даже не пытаетесь мне помочь, вы только пытаетесь унизить. Там же написано Лицевая сторона, обратная сторона. Что непонятного ? Область печати уже установлен Области печати: Лицевая сторона A1 J48 Обратная сторона K1 T48 Вот так понятно ? Что еще вы придумаете чтобы меня унизить ?
0 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
23.05.2021, 21:05 [ТС] |
7 |
Напишите пожалуйста код для печати двух страниц на одном листе с функцией Переворачивать страницы относительно короткого края Области печати: Лицевая сторона A1 J48 Обратная сторона K1 T48 Файл во вложении
0 |
Zeag 810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
||||
23.05.2021, 21:16 |
8 |
|||
Решение У меня ваш файл показывается как на скрине, так что печатает по 2 листа. Но вроде то, что хотели.
Миниатюры
1 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
24.05.2021, 23:15 [ТС] |
9 |
Zeag, У вас почему то страничный режим, не знаю почему, я сохраняла в обычном режиме Спасибо за код. Проверю на работе
0 |
810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
|
24.05.2021, 23:38 |
10 |
Я поставил страничный режим, чтобы посмотреть границы страниц.
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
25.05.2021, 07:58 |
11 |
с функцией Переворачивать страницы относительно короткого края У вас есть такая функция в принтере? сам переворачивает?
1 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
25.05.2021, 10:46 [ТС] |
12 |
Zeag, Zeag, Ваш код не печатает вьдвухстороннем режиме, он печатает листы по отдельно, у меня принтер с функцией двухсторонней печати
0 |
810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
|
25.05.2021, 10:52 |
13 |
Мы на удаленке. У меня дома вообще никакого принтера нет. На работе без двухсторонки. Тыкать пальцем в небо в программировании проблематично. И сколь я вижу в гугле при поиске «excel двусторнняя печать», это вообще проблема не экселя, а настроек принтера — в нем отмечается соответствующий пункт. Для примера выведите в ОДИН (!) файл и потом из проводника его отправьте на ваш принтер и посмотрите результат.
1 |
Karina4 0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
||||
25.05.2021, 12:00 [ТС] |
14 |
|||
Alex77755, Это хорошая идея, получился вот такой код
Только как бы мне сделать чтобы на печать вывелить область печати «A1:I52» «J1:R52»
0 |
Zeag 810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
||||||||
25.05.2021, 12:03 |
15 |
|||||||
Посмотрите на разницу кодов:
Ничего не замечаете в части до PrintOut?
1 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
25.05.2021, 12:28 [ТС] |
16 |
Zeag, на рабочем принтере область печати почему то изменилась. у меня дома по другому, я изменила область печати на A1:R52
0 |
810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
|
25.05.2021, 12:30 |
17 |
Решение Я к тому, что попробовал бы указать область печати и затем Copies:=1, Collate:=True, IgnorePrintAreas:=False
1 |
Karina4 0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
||||
25.05.2021, 13:40 [ТС] |
18 |
|||
Zeag, У меня уже есть рабочий код
этот код печатает с двух сторон заданую обрасть печати Мне его нужно переделать чтобы код сам задавал область печати, область печати A1:R52
0 |
Zeag 810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
||||
25.05.2021, 13:49 |
19 |
|||
Проверьте так. Но еще раз — вслепую работать трудно.
1 |
0 / 2 / 0 Регистрация: 09.11.2020 Сообщений: 334 |
|
03.06.2021, 22:09 [ТС] |
20 |
Разобралась. Спасибо. Оказывается всё было очень просто, просто нужно было один раз распечатать лист с функцией двухсторонней печати и сохранить файл, потом в коде печати указать диапазон печати двух листов, и всё, больше ничего не нужно при нажатии на кнопку печать эти два листа выходят в функцией двухсторонней печати так как мы сохраняли файл в таком виде Всем спасибо за отзывчивость
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
03.06.2021, 22:09 |
Помогаю со студенческими работами здесь Нумерация страниц и двухсторонняя печать Canon mf3010 двухсторонняя печать
Двухсторонняя печать документа ворд из делфи Printout(from, To, Copies, Preview, ActivePrinter, PrintToFile,… Программно узнать, есть ли на принтере двухсторонняя печать VBS. Изменение свойства принтера — двухсторонняя печать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 20 |
Содержание
- Excel/VBA: Установка двухсторонней печати (Duplex print)
- Сообщения 18
- 1 Тема от Kuryachev 2010-01-06 16:24:05
- Тема: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 2 Ответ от alexii 2010-01-06 19:01:42
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 3 Ответ от max7 2010-01-07 06:53:15 (изменено: max7, 2010-01-07 07:03:54)
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 4 Ответ от alexii 2010-01-07 08:13:56
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 5 Ответ от max7 2010-01-07 13:16:24
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 6 Ответ от alexii 2010-01-07 18:40:10
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 7 Ответ от max7 2010-01-07 20:31:00
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 8 Ответ от alexii 2010-01-07 21:25:21
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 9 Ответ от dsb 2010-01-08 09:32:22
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 10 Ответ от alexii 2010-01-08 11:01:21
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 11 Ответ от smaharbA 2010-05-28 08:55:34
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 12 Ответ от Kuryachev 2010-06-08 13:38:30
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 13 Ответ от Medeg1971 2010-08-16 08:39:19
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 14 Ответ от Bagir 2010-10-11 14:44:46
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 15 Ответ от Bagir 2010-10-11 15:18:07
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 16 Ответ от smaharbA 2010-10-11 17:22:20
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 17 Ответ от Bagir 2010-10-11 19:55:51
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- 18 Ответ от alexii 2010-10-11 22:25:37
- Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
- Printout vba excel двусторонняя печать
Excel/VBA: Установка двухсторонней печати (Duplex print)
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 18
1 Тема от Kuryachev 2010-01-06 16:24:05
- Kuryachev
- Гость
Тема: Excel/VBA: Установка двухсторонней печати (Duplex print)
Пожалуйста помогите! Возможно ли с помощью кода VBA установить/снять двухсторонюю печать листа Excel. Если нет — то как открыть диалог Печать/Свойства.
2 Ответ от alexii 2010-01-06 19:01:42
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Kuryachev, в каком Excel такое есть? В 2003 — нет.
3 Ответ от max7 2010-01-07 06:53:15 (изменено: max7, 2010-01-07 07:03:54)
- max7
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Нет, дуплекс можно указать в настройках принтера (не в excel’е) http://office.microsoft.com/en-us/word/ … 71033.aspx
Возможно вам будет интересен этот вариант (как альтернатива) http://www.vbforums.com/showpost.php?p= … ostcount=1
4 Ответ от alexii 2010-01-07 08:13:56
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Коллега, как раз этот, приведённый Вами, пример относится именно к возможностям самого приложения (WinWord), а не к настройкам драйвера принтера . А за ссылки — спасибо.
5 Ответ от max7 2010-01-07 13:16:24
- max7
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Настройки драйвера/принтера специфичны для конкретного драйвера/принтера, но есть возможность включить (в частности) дуплекс через winapi через структуры свойств драйвера/принтера. Я могу ошибаться, но если принтер поддерживает дуплекс, и он включён в настройках драйвера, то в диалоге печати появляется чекбокс «двухсторонняя печать», и по-моему, это «фича» не доступна из VBA.
6 Ответ от alexii 2010-01-07 18:40:10
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
OFF: max7, как раз для WinWord’а данный флажок обрабатывается им самим безо всякого участия драйвера принтера (что, конечно, не отменяет возможность задействовать не его, а возможность двусторонней печати через сам драйвер принтера, если тот поддерживает такую возможность). В данном случае, для WinWord’а это:
Печатается одна сторона листов (нечётная), затем он просит вынуть/повернуть/вставить листы, затем печатается вторая сторона листов (чётная).
7 Ответ от max7 2010-01-07 20:31:00
- max7
- Участник
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Печатается одна сторона листов (нечётная), затем он просит вынуть/повернуть/вставить листы, затем печатается вторая сторона листов (чётная).
Ну это не дуплекс, это насмешка какая-то. Я предпочитаю управлять двусторонней печатью «в ручную»: печатаю нечётные, затем выдаю диалог вроде «переверните/продолжать/отмена», печатаю чётные, и т.п.
P.S.: Самое интересное (я немного изучал это вопрос), что при «прямой печати» на принтер/спуллер (форматы к PCL, PostScript, и т.д. смотря какой поддерживает принтер, либо эмулятор в драйвере) в «текущем сеансе печати» задавать режимы печати очень просто (в winapi есть специальные методы ). Для PCL это по сути однобайтовая команда, для PS — вызов процедуры.
8 Ответ от alexii 2010-01-07 21:25:21
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Я предпочитаю управлять двусторонней печатью «в ручную»: печатаю нечётные, затем выдаю диалог вроде «переверните/продолжать/отмена», печатаю чётные, и т.п.
Оно именно так и есть.
Я тоже как-то делал для себя под Access’ом, только чуть иначе: из отчёта формата A5 делал брошюру на листах A4, дабы можно было потом просто сложить пополам и скрепить. Так сказать четырёхсторонняя печать — нужно было трижды поворачивать листы. Было весьма весело, но всё-таки сделал и потом печатал.
9 Ответ от dsb 2010-01-08 09:32:22
- dsb
- Разработчик
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Насколько я знаю, если на принтере сконфигурировать опцию duplex=on, то он все задания по-умолчанию будет печатать в дуплексе. Может лучше ориентироваться на этот вариант?
10 Ответ от alexii 2010-01-08 11:01:21
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Конечно. Осталось выяснить, это ли самое имел в виду автор темы, або что иное .
11 Ответ от smaharbA 2010-05-28 08:55:34
- smaharbA
- Разработчик
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Эта же проблема возникла давее как вчера
имеем книгу со 125 листами на каждом по 4 печатных страницы — как включить для каждого двухстороннюю печать ?
или усложним — как при ранее настроенных в ручнуюю свойствах в параметрах страницы изменить часть листов на двухстороннюю печать, часть на одностороннюю ?
12 Ответ от Kuryachev 2010-06-08 13:38:30
- Kuryachev
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Я разработал код, но сразу хочу сказать что он кривоват, поскольку для Экселя ничего в VBA под дуплекс не разработано(не могу сказать за Офис 2010 есть ли там какие-то добавления). А по сему как-то вот так:
Для меня также важен код для определения поддержки (или нет) дуплекса используемым принтером.
Заранее благодарен.
13 Ответ от Medeg1971 2010-08-16 08:39:19
- Medeg1971
- Гость
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Всем доброго времени суток!
Уже месяц бьюсь пальцами об «клаву» по этой же теме, и ничего не придумал лучше ниже следующего:
Перед тем как выводить на печать в дуплексе из Екселя, необходимо создать два файла на диске «C:», которые будут содержать все настройки принтера.
Первый будет содержать настройки принтера по умолчанию, а второй настройки для печати в дуплексе.
Первый файл «Default.dat» можно создать сразу нижеследующей строкой из любого командера или в CMD.EXE, если принять
во внимание что принтер и так настроен по умолчанию: «C:WindowsSystem32printui.exe /Ss /n «Имя принтера» /a «C:Default.dat».
Имя принтера — принтер по умолчанию, например: HP LaserJet 2200 Series PCL 5.
Перед созданием второго — «Duplex.dat», сначала необходимо зайти в настройки принтера и включить дуплекс в двух закладках — «Общие» -> «Настройка. » и
«Дополнительно» -> «умолчания. «.
Обе панели должны быть настроены одинаково, только в этом случае обеспечивается надежная печать в дуплексе.
Затем нижеследующей строкой в CMD.EXE сохраняется второй файл настроек принтера:
«C:WindowsSystem32printui.exe /Ss /n «Имя принтера» /a «C:Duplex.dat».
Теперь можно написать макрос который будет вызывать программу, с помощью которой будут меняться настройки принтера на дуплекс, затем печать и возврат принтера
в исходное состояние.
Выше приведенный макросовый изврат является дороботкой макроса написаного «Kuryachev»-ым (да, простит меня автор).
Отличие заключается в отсутствии необходимости писать в макросе конкретный принтер и подгонять параметры включения принтера в дуплекс
методом тыка, что для многих может стать «камнем предкновения».
Также можно подготовить файлы настроек принтера для любых других случаев печати из Екселя, например: режим брошюры.
Тем не мение, данный способ остается извратом, так как:
— меняет настройки самого драйвера принтера, а не Екселя
— необходимо держать на диске файлы настроек принтера
— для работоспособности макроса необходимо предварительно создать эти файлы настроек
— нельзя перенести макрос на другой комп и сразу работать (например: отправить по почте готовую таблицу пользователю
не объяснив как создать и куда положить файлы настроек)
— нельзя определить поддерживает ли вообще принтер дуплекс.
А, мелкософту за это ОГРОМНЫЙ -М-И-Н-У-С-.
14 Ответ от Bagir 2010-10-11 14:44:46
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Тоже давно ищу способ. Нашел замечательный такой пример: Duplex Printing — MrExcel Message Board. Отлично работает. Красиво оформлен и даже обработка ошибок. Похоже умелые руки его делали .
строку:
чтобы нормально отрезать хвостик от имени принтера, полученного с помощью Application.ActivePrinter.
Но фишка в следующем: Переключает дуплекс то он отлично, но Excel зараза помнит с какими настройками при открытии он этот принтер взял. То же самое наблюдается и в уже предоставленных тут примерах. То есть чтобы понять, можно отбросить макросы в сторону.
Открываем Excel
делаем файл -> Печать
Смотрим настройки принтера
Смотрим как выставлен дуплекс
Далее ничего не изменяя закрываем настройки.
Давим кнопку «Пуск» -> Принтеры и факсы
Открываем свойства принтера и меняем дуплекс.
Закрываем с сохранением. (именно это и делают все найденные мною примеры включая этот)
Открываем диалог печати в Excel и смотрим свойства принтера — Дуплекс.
Нашего переключения, которое было сделано через «Принтеры и факсы» мы не видим. То есть Excel запомнил состояние принтера при старте.
Как бы научить его считать настройки принтеров заново, тогда бы модуль был на все 100% рабочий, и управлять дуплексом из VBA было бы реально.
15 Ответ от Bagir 2010-10-11 15:18:07
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Вот еще вариант переключения дуплекса с использованием DLL: VBA, office, VBS or shell duplex printing — VBForums.
Но та же проблема: Переключение можно увидеть в свойствах принтера через Пуск->Принтеры и факсы, но в свойствах принтера, вызванных через диалог печати Excel, эти переключения не видны.
16 Ответ от smaharbA 2010-10-11 17:22:20
- smaharbA
- Разработчик
- Неактивен
- Рейтинг : [ 0 | 0 ]
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
не все так просто, но ексель это может, нужно узнать ДиСи окна и дальше пойдет
17 Ответ от Bagir 2010-10-11 19:55:51
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
В общем задача решена с горем пополам, а я уж было и не верил в боле менее приемлемый вариант. Менять настройки у принтера, выбранного для печати т.е. Application.ActivePrinter бес толку. Excel все равно помнит свои параметры принтера. Вывод: Выбираем другой принтер, меняем у нужного, и выбираем его. Тогда настройки будут такими, какие в этот момент в памяти драйвера.
На данный момент есть два примера. Один очень короткий с использованием сторонней dll, другой увесистый, но полностью на VB. Оба примера не оставляют паразитных черных окон и прочей чешуи. Но минус у них общий. При работе VBA изменяются параметры драйвера принтера, т.е. переключение дуплекса идет в нем. Если в этот момент работают другие проги, и для них это критично, то вероятно это решение не подойдет. Но немного разгоню тучи. Можно сделать таким образом, чтобы первоначальное состояние настройки возвращалось после печати.
18 Ответ от alexii 2010-10-11 22:25:37
- alexii
- Разработчик
- Неактивен
Re: Excel/VBA: Установка двухсторонней печати (Duplex print)
Bagir, прочтите справку по BBCode и используйте теги. Я поправил Ваши посты.
Источник
Printout vba excel двусторонняя печать
Модератор форума: китин, _Boroda_
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Двухсторонняя печать средствами VBA (Переключение на двухстороннюю печать и обратно.)
Двухсторонняя печать средствами VBA
Bagir | Дата: Вторник, 12.10.2010, 12:18 | Сообщение № 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Продублирую тут тему с excelworld.ru
Следует знать:
Excel не умеет работать с двухсторонней печатью и вообще не знает что это такое.
Все что связано с дуплексом находится в драйвере принтера.
Замеченно:
При выборе принтера, Excel получает его настройки, в том числе и настройки дуплекса.
Excel помнит их «пока живет» или до выбора другого принтера.
Изменение настроек в Экселе Файл -> Печать -> Свойства вызывает окно драйвера принтера,
Но не изменяет общих настроек этого принтера.
То есть изменения настроек принтера сделанные в Эксел не увидеть например в Ворде.
Если нужный принтер в Excel уже выбран, то изменение его настроек
по средствам Панель управления — > Принтеры -> Свойства ничего не дадут.
Главный недостаток предложенного кода:
Изменения дуплекса будут сделаны в общих настройках драйвера принтера,
а не в тех, что уже запомнил Excel
вариант обхода:
После изменения настроек, выбрать любой другой принтер, а затем обратно выбрать нужный,
чтобы его измененные настройки были заного прочитаны Excel-ом.
Но такой вариант работает нестабильно, да и он просто вообще «кривой» и не является решением.
Нужно:
Заставить функцию изменять настройки принтера, уже считанные Excel-ом
Еще раз хочу отметить:
Свойства принтера открытые из окна печати Excel и из Палень управления -> Принтеры Не одно и тоже!
макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Модератор:Naeel Maqsudov
-
clar
- Сообщения:14
- Зарегистрирован:25 фев 2013, 13:59
Здравствуйте,
помогите, пожалуйста, создать макрос (Excel) для двусторонней печати на одном листе:
диапазон A1:Q50 — книжная ориентация на 1 лист,
диапазон T10:AQ25- альбомная ориентация на оборотной стороне листа
-
pashulka
- Сообщения:831
- Зарегистрирован:24 ноя 2004, 03:46
- Контактная информация:
11 сен 2014, 11:55
Если воспользоваться записью макроса (макрорекордером), то получается что-то вроде нижеопубликованного кода :
Код: Выделить всё
Private Sub Test()
With ActiveSheet.PageSetup
.PrintArea = "A1:Q50"
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1
.Parent.PrintOut
MsgBox "Переверните лист для печати", vbInformation, ""
.PrintArea = "T10:AQ25"
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
.Parent.PrintOut
End With
End Sub
А ежели после печати нужно сбросить установленные настройки, то, опять же, макрорекордер выдаёт следущее :
Код: Выделить всё
ActiveSheet.PageSetup.PrintArea = "" 'Сброс области печати
ActiveSheet.ResetAllPageBreaks 'Сброс разрывов страниц
-
clar
- Сообщения:14
- Зарегистрирован:25 фев 2013, 13:59
11 сен 2014, 13:16
Спасибо, можно создать в макросе:
1) чтобы подача бумаги (переворот) был не ручная, а автоматическая
2) создать кнопку для этого макроса на панели.
Заранее спасибо
-
pashulka
- Сообщения:831
- Зарегистрирован:24 ноя 2004, 03:46
- Контактная информация:
11 сен 2014, 13:36
1) Если такая возможность и существует, то мне она неизвестна, ибо с принтерами, которые выполняют все мои обязанности, лично я, не сталкивался. Но даже если она и есть, уверен, что зависит она от модели принтера и вряд ли напрямую «управляется» командами VBA.
P.S. Возможно, используя соответствующие функции WinAPI, Вы и сможете добиться желаемого … но возможности проверить эту гипотезу, у меня, увы, нет.
2) В XL97-2003 легко, следующие версии уже не ко мне
-
pashulka
- Сообщения:831
- Зарегистрирован:24 ноя 2004, 03:46
- Контактная информация:
12 сен 2014, 14:50
В продолжении темы : вот здесь можно найти статью, где ребята из Microsoft опубликовали пример работы с принтером, поддерживающим двухстороннюю печать.
Т.к. статья касается «чистого» VB и в примере используется об’ект Printer, которого нет в VBA, то Printer.DeviceName можно попробовать заменить на Application.ActivePrinter и если это не прокатит, то на переменную strPrinter
Код: Выделить всё
Dim strPrinter As String
strPrinter = Application.ActivePrinter
If strPrinter Like "*(* :) " Then
strPrinter = RTrim(Left(strPrinter, InStrRev(strPrinter, "(") - 1))
End If