Постараюсь изложить проблему не вдаваясь в ненужные детали.
Я уже несколько лет пишу простенький софт на VBA для заполнения налоговых деклараций. Excel + VBA позволяют быстренько состряпать ново введенную форму, а сроки, это для меня главное.
Идет много печати, и в процессе нужно отправлять одни задания с дуплексом, другие просто на одной стороне. У команды PrintOut нет параметров выбора дуплекса. Да и простого пути тут тоже нет. Сейчас пользуюсь прогой FinePrint. Отправляю печать на нее, а она может перенаправить на выбранный принтер с указанием флага дуплекса. Способ не полностью автоматизировал работу. Оператору нужно каждый раз выбирать, печатать с дуплексом или без.
Вчера удалось найти еще одно временное решение. Добавил нововведение в программу. Все получилось. Дуплекс нормально работает. Были редкие несрабатывания, но задержка в одну секунду даже простым способом Application.Wait исправила положение.
Что получилось найти:
Есть два способа переключить дуплекс. Первый полностью на VBA, второй использует стороннюю dll библиотеку.
У этих способов есть общий минус. Они меняют параметры принтера не в Excel, а общие (Пуск -> Принтеры). Это конечно неудобство, но можно мириться. Оба способа рабочие, но столкнулся с такой проблемой. Я не могу поменять дуплекс у принтера, если он выбран активным в Excel (2003). То есть поменять то я могу, и после запуска VBA дуплекс действительно переключится, и это можно увидеть открыв свойства принтера из проводника Windiws, но не из Excel. Нашел только следующее решение:
- Делаем нужный принтер не активным (выбираем любой другой).
- Переключаем дуплекс нужному принтеру
- Выбираем его активным.
Тогда настройки будут прочитаны. Способ тоже не очень, но он пока единственный.
Я прикладываю примеры в файле, чтобы не раздувать тему тут.
В примере есть еще разные модуля, думаю они будут интересны тем, кто изучает тему печати.
Хотелось бы обсудить модуль PrinterDuplexVBA Function TestPrinter()
Неплохо бы было изменять не общие настройки драйвера а только настройки активного принтера Excel, чтобы это не касалось других программ.
Смотрите в моем файле модуль PrinterDuplexVBA. Там две функции. Это все что надо для работы.
Функция TestPrinter запускает функцию SetPrinterDuplex.
Я уже несколько лет пишу простенький софт на VBA для заполнения налоговых деклараций. Excel + VBA позволяют быстренько состряпать ново введенную форму, а сроки, это для меня главное.
Идет много печати, и в процессе нужно отправлять одни задания с дуплексом, другие просто на одной стороне. У команды PrintOut нет параметров выбора дуплекса. Да и простого пути тут тоже нет. Сейчас пользуюсь прогой FinePrint. Отправляю печать на нее, а она может перенаправить на выбранный принтер с указанием флага дуплекса. Способ не полностью автоматизировал работу. Оператору нужно каждый раз выбирать, печатать с дуплексом или без.
Вчера удалось найти еще одно временное решение. Добавил нововведение в программу. Все получилось. Дуплекс нормально работает. Были редкие несрабатывания, но задержка в одну секунду даже простым способом Application.Wait исправила положение.
Что получилось найти:
Есть два способа переключить дуплекс. Первый полностью на VBA, второй использует стороннюю dll библиотеку.
У этих способов есть общий минус. Они меняют параметры принтера не в Excel, а общие (Пуск -> Принтеры). Это конечно неудобство, но можно мириться. Оба способа рабочие, но столкнулся с такой проблемой. Я не могу поменять дуплекс у принтера, если он выбран активным в Excel (2003). То есть поменять то я могу, и после запуска VBA дуплекс действительно переключится, и это можно увидеть открыв свойства принтера из проводника Windiws, но не из Excel. Нашел только следующее решение:
- Делаем нужный принтер не активным (выбираем любой другой).
- Переключаем дуплекс нужному принтеру
- Выбираем его активным.
Тогда настройки будут прочитаны. Способ тоже не очень, но он пока единственный.
Я прикладываю примеры в файле, чтобы не раздувать тему тут.
В примере есть еще разные модуля, думаю они будут интересны тем, кто изучает тему печати.
Хотелось бы обсудить модуль PrinterDuplexVBA Function TestPrinter()
Неплохо бы было изменять не общие настройки драйвера а только настройки активного принтера Excel, чтобы это не касалось других программ.
Смотрите в моем файле модуль PrinterDuplexVBA. Там две функции. Это все что надо для работы.
Функция TestPrinter запускает функцию SetPrinterDuplex.