Проблемы с печатью UserForm.PrintForm

Программирование на Visual Basic for Applications
$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Проблемы с печатью UserForm.PrintForm

Сообщение $Yastrebov$ » 05.05.2007 (Сб) 17:06

Печатаю форму методом UserForm.PrintForm

Подскажите, пожалуйста, как:
1. Получить список доступных принтеров (хочу сделать выборку на основе собственного ListBox)
2. Задать принтер для печати своей формы (возможно, на время печати, сменить принтер, что установлен по умолчанию, а затем восстановить)
3. Указать принтеру, что нужно печатать в ориентации: "Альбомная".
4. Послать на печать: Me.PrintForm
5. Восстановить исходные настройки (по необходимости)

Application.ActivePrinter - дает возможность, увы, прочитать только значение принтера по умолчанию, а объект Printer в VBA отсутствует.

Вот в VB, например, все очень просто и чтобы печатать в ориентации: "Альбомная", достаточно указать:
Printer.Orientation = 2
А тут такой облом!

Выручайте. Буду очень благодарен, если получу ответ хоть на один из этих вопросов.
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.05.2007 (Сб) 17:18

Application.ActivePrinter никогда не была read-only...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 05.05.2007 (Сб) 17:42

GSerg писал(а):Application.ActivePrinter никогда не была read-only...


Возможно... Но это не решает других проблем :( связаных с печатью. Помогите, пожал., кто знает. Рою уже второй день...
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Re: Проблемы с печатью UserForm.PrintForm

Сообщение KL » 05.05.2007 (Сб) 19:19

$Yastrebov$ писал(а):1. Получить список доступных принтеров (хочу сделать выборку на основе собственного ListBox)
2. Задать принтер для печати своей формы (возможно, на время печати, сменить принтер, что установлен по умолчанию, а затем восстановить)
3. Указать принтеру, что нужно печатать в ориентации: "Альбомная".
4. Послать на печать: Me.PrintForm
5. Восстановить исходные настройки (по необходимости)


1) http://tinyurl.com/9cm7l
2) Application.ActivePrinter="bla-bla-bla"
3) http://tinyurl.com/2na2bc
4) Me.PrintForm
5) x=Application.ActivePrinter --> Application.ActivePrinter="bla-bla-bla" --> Application.ActivePrinter=x
Привет,
KL

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 08.05.2007 (Вт) 4:21

Спасибо, но указать принтеру, что нужно печатать в ориентации: "Альбомная" для формы так и не получилось...

Единственный вариант по приведенной ссылке копирует форму в лист Excel (что уже не очень как для решения) и печатает ее в ориентации: "Альбомная", но с огранкой окна, в отличии от метода Me.PrintForm, который печатает только содержимое формы.

Пришел к выводу, что конструкция PrintForm не поддается управлению и печатает форму только в ориентации: "Портретная" и на принтер по умолчанию, а все настройки (в том числе и через API сводятся к изменению печати для PrintOut, а значит для листа, а не формы)

:idea: Отсутствие объекта Printer, настроек для печати PrintOut, а также отсутствие таких важных свойств как, например, KeyPreview для формы делают язык VBA гораздо слабее, чем он мог бы быть!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList