Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
1

Код VBA выбор принтера

23.11.2017, 07:45. Показов 7181. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте! Подскажите пожалуйста, в БД имеем два вида одного и того же отчета(стикеры) отформатированы под печать на разных принтерах. Перед выводом отчета имеем диалоговую форму с группой переключателей в количестве 2 шт, обзываются они 1 - принтер этикеток, 2- обычный принтер и кнопка ОК, на нажатии кнопки код:
Visual Basic
1
2
3
4
5
6
7
Private Sub Кнопка1_Click()
If Me.Группа2 = 1 Then
Application.Printer = Application.Printers("ZDesigner GK420t")
Else
Application.Printer = Application.Printers("HP LaserJet 1100 (MS)")
End If
End Sub
на кнопка вниз
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Кнопка1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.Группа2 = 1 Then
DoCmd.OpenReport "НаклейкиZEBRA", acViewPreview
DoCmd.Close acForm, Me.Name
Else
DoCmd.OpenReport "ОтчетHP", acViewPreview
DoCmd.Close acForm, Me.Name
End If
End Sub
Но при нажатии кнопки отчет начинает открываться под формат, который задается пинтером по умолчанию., т.е если по умолчанию стоит принтер этикеток, а нужно выполнить печать на обычном принтере, во врмемя открытия отчета "ОтчетHP" появляется сообщение, что отчет отформатирован под другой принтер и соответственно открывается в неприглядном виде, (получается на код заданный при нажатии кнопки access не реагирует?)отсюда вопрос, как исправить можно ситуацию? Спасибо

Добавлено через 4 минуты
И еще проблем, при открытии отчета в режиме(просмотра перед печатью) при применении принтера наклеек, не показываются все страницы, а только одна, чтобы перейти в режим "показать все страницы" нужно жать соответствующую кнопку, можно это как -то тоже подправить без применения действий на панели элементов? Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2017, 07:45
Ответы с готовыми решениями:

Выбор принтера через форму и перенастройка принтера для отчетов
Добрый день. Очень нужна помощь. Накидал простенькую бд для примера. Есть форма Form1, где...

Назначение принтера отчету средствами VBA Access
Есть отчет его нужно распечатать на принтере по умолчанию и принтере doPDF. Как прописать код VBA...

Выбор принтера для печати
Какая переменная отвечает за текущий принтер, т.е. принтер на который работает DoCmd.OpenReport ?...

Печать отчета через процедуру VBA с выводом окна свойств принтера
Доброго времени суток форумчане! Возникли вопросы по печати отчетов, нужна Ваша помощь! Суть...

15
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,462
23.11.2017, 07:53 2
Цитата Сообщение от Braser Посмотреть сообщение
появляется сообщение, что отчет отформатирован под другой принтер и соответственно открывается в неприглядном виде, (получается на код заданный при нажатии кнопки access не реагирует?)отсюда вопрос, как исправить можно ситуацию? Спасибо
Может это поможет.
Модуль переустановки "принтерных" настроек всех отчетов под текущий принтер по умолчанию
Пробовать лучше на резервной копии.
Возможно нужно будет чутка переделать под работу не со всеми, а только с конкретным отчётом.

Цитата Сообщение от Braser Посмотреть сообщение
при открытии отчета в режиме принтера наклеек не показываются все страницы, а только одна, чтобы перейти в режим "показать все страницы" нужно жать соответствующую кнопку, можно это как -то тоже подправить без применения действий на панели элементов?
Тут мне не понятно.
... примерчик бы посмотреть.
1
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
23.11.2017, 08:07  [ТС] 3
Посмотрел по ссылке, спасибо, но там вроде решение расхода чернил больше фигурирует и по тексту :"затирает только данные по принтеру - поля и ориентация остаются прежними", у меня как раз ориентация отчета та же, но размеры этикеток разные. На этикеточном - 40*80, а на простом этикетка идет - 70*32, в этом то и проблема, поэтому он и ругается на поля и прочие прелести. Можно как-то при выборе отчета, до его открытия указать, что открывается он под определенный принтер и печататься он будет именно на нем, вне зависимости от того, какой по умолчанию стоит.
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,462
23.11.2017, 08:19 4
Цитата Сообщение от Braser Посмотреть сообщение
На этикеточном - 40*80, а на простом этикетка идет - 70*32, в этом то и проблема, поэтому он и ругается на поля и прочие прелести. Можно как-то при выборе отчета, до его открытия указать, что открывается он под определенный принтер и печататься он будет именно на нем, вне зависимости от того, какой по умолчанию стоит.
Можно.
Либо переделывать модуль (нужен пример + марки принтеров), либо продублировать отчёт этикеток для обычного принтера и выводить на печать соответственно параметру "Принтер по умолчанию"
1
Мы один, давай на "ты"
3421 / 1299 / 312
Регистрация: 16.06.2016
Сообщений: 3,046
23.11.2017, 08:24 5
Цитата Сообщение от Braser Посмотреть сообщение
Можно как-то при выборе отчета, до его открытия указать, что открывается он под определенный принтер и печататься он будет именно на нем, вне зависимости от того, какой по умолчанию стоит.
Можно. По отчёту ПКМ. Далее см. скриншот
Миниатюры
Код VBA выбор принтера  
0
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
23.11.2017, 08:39  [ТС] 6
Цитата Сообщение от Braser Посмотреть сообщение
И еще проблем, при открытии отчета
эта часть вопроса снимается, потому как решилось с помощью
Visual Basic
1
2
3
DoCmd.OpenReport "НаклейкиZEBRA", acViewPreview
DoCmd.RunCommand acCmdZoom50
DoCmd.RunCommand acCmdPreviewTwelvePages
Добавлено через 2 минуты
Цитата Сообщение от Eugene-LS Посмотреть сообщение
либо продублировать отчёт этикеток для обычного принтера
так у меня и так 2 отчета и называются они по разному и под разные принтеры сделаны, источник только один...

Добавлено через 4 минуты
Цитата Сообщение от Панург Посмотреть сообщение
По отчёту ПКМ
это чего?
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,462
23.11.2017, 08:43 7
Цитата Сообщение от Braser Посмотреть сообщение
так у меня и так 2 отчета и называются они по разному и под разные принтеры сделаны, источник только один...
Ну так напишите функцию типа GetDefaultPrinterName() - возврат названия принтера по умолчанию - и в зависимости от возвращаемого значения печатайте либо один - либо другой.

Насколько я помню.
Отчёт "запоминает" последний принтер на котором печатался.
И при повторе печати- пытается вывести данные именно на него.
1
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.11.2017, 08:49 8
Лучший ответ Сообщение было отмечено Braser как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Кнопка1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.Группа2 = 1 Then
  DoCmd.OpenReport "НаклейкиZEBRA", acViewPreview
  DoCmd.Close acForm, Me.Name
Else
  DoCmd.OpenReport "ОтчетHP", acViewPreview
  DoCmd.Close acForm, Me.Name
End If
Reports(0).Printer = Application.Printer
End Sub
2
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
23.11.2017, 08:51  [ТС] 9
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Ну так напишите функцию типа GetDefaultPrinterName()
Да уж, с этим проблемы...
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,462
23.11.2017, 09:02 10
Цитата Сообщение от Braser Посмотреть сообщение
Да уж, с этим проблемы...
А тут разве нет?

или тут
1
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
23.11.2017, 09:17  [ТС] 11
Цитата Сообщение от mobile Посмотреть сообщение
Reports(0).Printer = Application.Printer
Реально помогло! Спасибо ОГРОМНОЕ!
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,462
23.11.2017, 09:31 12
Braser, отстал я от жизни совсем ....
И действительно:
Application.Printer Property (Access)

Видимо нужно воздерживаться от от старых решений (MSA 97-2000) и поболе читать нового.
mobile - спасибо за науку!
0
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
23.11.2017, 09:31  [ТС] 13
А тут разве нет?
Есть, но уровень компетенции и отсутствие времени пока не позволяет во всем разбираться
0
10472 / 5458 / 1375
Регистрация: 05.10.2016
Сообщений: 15,462
23.11.2017, 09:38 14
В догонку:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub cmdTest02_Click()
Dim prtDefault As Printer
 
    Set Application.Printer = Application.Printers(0)
 
    Set prtDefault = Application.Printer
 
    With prtDefault
     MsgBox "Device name: " & .DeviceName & vbCrLf _
     & "Driver name: " & .DriverName & vbCrLf _
     & "Port: " & .Port
    End With
End Sub
Век живи - век учись!
1
320 / 135 / 36
Регистрация: 16.03.2013
Сообщений: 1,437
23.11.2017, 10:29  [ТС] 15
Вот выйду на пенсию, пошью себе костюм с отливом и в Ялту....
0
Мы один, давай на "ты"
3421 / 1299 / 312
Регистрация: 16.06.2016
Сообщений: 3,046
23.11.2017, 16:16 16
Цитата Сообщение от Braser Посмотреть сообщение
это чего?
По картинке трудно понять (там контекстное меню изображено)? ПКМ - Правый Клик Мыши
0
23.11.2017, 16:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2017, 16:16
Помогаю со студенческими работами здесь

Автоматический выбор и подключение нужных библиотек офиса в VBA
Есть ли решение для простой проблемы - на разных компьютерах разные версии библиотек VBA (в первую...

Изменение настроек выбранного принтера Excel из VBA
Задача: Изменение настроек выбранного принтера Excel из VBA. Определимся с условными названиями:...

Выбор принтера
Помогите выбрать принтер. В них вообще Нуль) Знаю только , что делят на лазерные и струйные) ...

Выбор принтера
Привет! Открываю организацию по услугам населению (Реклама в лифтах), подскажите принтер какой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru