Как в excel получить список установленных принтеров

Программирование на Visual Basic for Applications
Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Как в excel получить список установленных принтеров

Сообщение Alex_new_2030 » 22.07.2004 (Чт) 5:58

... Вот собственно и весь вопрос.
Не ругайте если тема уже поднималась здесь. В поиске ни чего не нашел или поиск по конфе не работает.

Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Сообщение Alex_new_2030 » 23.07.2004 (Пт) 12:49

Вот нашел для VB

Код: Выделить всё
Dim ii As Printer
Dim k As String
Dim kk As Integer
On Error GoTo printer_error
setprinter = Printer.DeviceName 'Запомнить принтер по умолчанию
Combo1.Clear
For Each ii In Printers
Combo1.AddItem ii.DeviceName 'Загнать все принтера в комбобокс
Next
For i = 0 To Combo1.ListCount - 1
If setprinter = Combo1.List(i) Then Combo1.ListIndex = i: Exit For'установить в комбобоксе принтер по умолчанию
Next i


Но в VBA ругается что нету объекта типа printer[/code]

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 23.07.2004 (Пт) 16:07

Ну вот и сходи лошадью.
Напиши на VB программу которая будет составлять список принтеров, устанавливать принтер по умолчанию, и вызывай её из Excel.

Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Сообщение Alex_new_2030 » 26.07.2004 (Пн) 6:37

Мне как раз наоборот надо. Из программы на VB вызываю Excel, заполняю документ и на печать. А для гибкости нужна возможность выбора принтера для печати документа.
Проблема в том, что в VB объект printer дает имя принтера в таком виде: 'HP DeskJet 400 монохром' или '\\Alma\Canon LASER SHOT LBP-1120', а в Excel'e свойство Application.ActivePrinter выдает имя принтера так: 'HP DeskJet 400 монохром (LPT1:)' или '\\Alma\Canon LASER SHOT LBP-1120 (Ne05:)'
по этому присвоение Application.ActivePrinter = "HP DeskJet 400 монохром" вызывает ошибку. :(
Как создать в VB список принтеров в "формате" Excel?

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 26.07.2004 (Пн) 9:22

На VB выбирай принтер и устанавливай его по умолчанию. Excel при запуске подхватит принтер по умолчанию.
Только тебе необходим такой алгоритм:
1. Программа создает данные (можно и в Excel'е)
2. Выбираеш принтер и устанавливаешь его умолчательным( запоминая предыдущее умолчание )
3. Если был Excel - закрываешь, и открываешь снова, теперь в Excel'e свойство Application.ActivePrinter выдаст, тебе, тот принтер который необходим. Печатаешь.
4. Востанавливаешь принтер по умолчанию. И решаешь переоткрывать ли Excel ( для применения принтера по умолчанию )


Вернуться в VBA

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

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

    TopList