Excel debug print
VBA-Урок 2. Отладчик (Debugger)
Иструмент в среде VBA для отладки кода программ. Уметь работать с дебагером жизненно важно каждому, кто пишет на VBA . Он нужен для того, чтобы проверить как работает ваш код, и чтобы найти и исправить в нем ошибки.
Откройте Visual Basic Editor (Alt + F11) . Создайте в нем модуль и пропишите следующий код:
Нажмите Ctrl + G, при этом внизу появится окно Immediate . В этом окне можно в ходе работы макроса изменять значения переменных, выполнять различный код VBA, не написан в модуле ранее.
Если стать курсором внутрь кода модуля и нажать F5, он выполнится полностью. Если нажать F8 — исполнится только одна строка кода. Нажатие F8 выполнит следующую строку кода и т.д. можно выполнить пошагово весь код. С помощью кнопки F9 можно создать точку остановки. Если потом вы запустите код с помощью кнопки F5, код будет выполнен до указанной строки и затем приостановится. Далее его можно будет продлить с помощью кнопок F5 или F8, описанных ранее.
Если внимательно рассмотреть код, вы увидите, что в переменные A, B, C, D присваиваются числа. Строки Debug.Print «текст» печатают указанный нами текст в открытое ранее окно Immediate , чтобы видеть, что происходит с переменной. Str (A) превращает число в текстовое значение. А Trim () убирает с него справа и слева пробелы. Оператор Round (С) округляет значения по правилам арифметики до целого числа (поэтому результат вычислений мы присваиваем в переменную целого типа Long , значит он должен быть целым). В конце кода мы специально создали ложную ситуацию, чтобы потренироваться использовать дебагер.
Станьте внутрь кода и нажмите F8 четыре раза. Желтым будет отмечено строку, который будет выполнен следующим. Наведите курсор на различные переменные. При этом появится всплывающее окошко, в котором увидите значение. Переменные, которым еще не были присвоены значения равны нулю.
Нажмите еще раз F8. В окне Immediate появится строка:
А = 10
Теперь мы можем изменить значение переменной A сразу в окне Immediate (например, изменим его на 8) . Для этого в новой строке окна Immediate напишите:
А = 8
и нажмите Enter . Теперь наведите на переменную A курсор и увидите, что его значение равно 8. чтобы увидеть значение, не приводя курсор, можно заставить его появиться в окне Immediate. Делается это так, введите в пустой строке окна Immediate:
?A
и нажмите Enter. Знак в окне Immediate означает то же самое, что и Debug.Print в коде. Просто так удобнее и короче писать. Сразу вы увидите число — результат вашего запроса.
Станьте курсором на последнюю строку кода (C = Round (C /D)) и нажмите F9. Появится точка остановки. Той же кнопкой ее можно убрать, но мы ее убирать пока не будем. Нажмите F5, программа выполнит все строки и остановится на последней. В окне Immediate появятся, сообщение о присвоении значений переменным. Мы добрались до последней строки кода. Он должен вызвать ошибку, так как содержит деления на ноль. Нажмите F8 и убедитесь в этом. В появившемся окне нажмите Debug. Если вы нажмете End, выполнение программы остановится, а мы хотим довести ее до конца.
Исправить ситуацию можно, изменив значение переменной D. Сейчас она равна нулю. В окне Immediate введите в пустой строке текст:
D = 2
и нажмите Enter . Теперь последней строкой кода мы делим не на ноль, а на 2, таким образом избегая ошибки. Нажмите F5 и программа завершит свою работу без ошибок.
Попробуйте изменить код потренируйтесь в использовании отладчика. Поверьте, он вам очень облегчит жизнь.
VBA Debug Print
Excel VBA Debug.Print
Debug Print is one of the useful tool presented in the VBA editor to figure out how a program is working and it helps to analyze the changes in the values of variables created in the VBA program. It shows the output of the immediate window when we run the program without any bugs.
Debug.print offers the two main benefits over the use of Msgbox to display the output of the code. It eliminates the need for clicking the OK button every time and displays the log of returned output values to the immediate windows. It saves a lot of time of users. The present article explains the use of excel VBA Debug Print with many examples and explaining how to use it covering the following things.
What is VBA Debug Print?
Debug is an object in VBA and used with the two methods called Assert and Print. The print is helpful in display message and asserts in helpful in the evaluation of the conditions. In VBA, debug.print statement is used in any place of the coding program to show the values of a variable or messages in the Immediate Window. These do not need any acknowledgment or confirmation and do not show any effect on the code developed. It is safe and best to use in the code in the situation to facilitating access to many users. These are just helpful in testing or evaluation of the code to confirm that it is working properly or not. Printing the variables, strings, numbers, array, values in excel sheets, and empty and active sheets.
How to Use Excel VBA Debug Print?
VBA debug.print is the statement helpful in displaying more number of variables at a time in the immediate window. It is the best and alternative approach to show the output.
Debug.print count, sum, average, standard deviation
As shown in the example, all the variables are separated with commas. This statement is able to transfer the output to the immediate window even in the case of a window is not opened. It does not stop running the code as in Msgbox. This flexibility supports continuous monitoring of the changes in the output with respect to changes in the code.
The variables count, sum, average, and standard deviation are displayed in the same line with equal space among them. If Immediate Window is not opened, follow the following steps to see the output.
Steps to Open Immediate Window and See the Output
- Press Ctrl + G or click on the ‘View’ menu in VBA editor.
- Choose the option ‘Immediate Window’.
- Place the cursor in the Window and again run the code.
- Observe the output in the window.
Examples of Excel VBA Debug.Print
The following are the examples to demonstrate the use of debug print in excel VBA.
Example #1 – Displaying the Values of the Variables
First, go to the Developer tab, click on Macros and create a macro to write the code in the VBA and add a name to it.
After adding name click on create. This opens the VBA editor.
Develop a small program as shown in the figure.
Code:
As shown in the screenshot, three dimensions or variables are decreased as X, Y, and Z as an integer, string, and Double respectively. To print these values Debug.print is used and the output will be displayed in the immediate window. Press CTRL+G to see the output as shown in the screenshot.
Run this code using F5 key and press CTRL+G to see the output in Immediate Window.
This program can be simplified by separating the debug.print statements by a comma.
Code:
This debugs statement prints the output in the same line as shown in the screenshot.
Example #2 – Debug print to File
This example illustrates the use of VBA debug print to display output to a file when the length of the text is too high.
The program to print the output on a file is developed as shown in the figure.
Code:
In this program, two variables called S and Num are considered as a string and integer respectively. The open statement is used to create a text file with the name test. A string called “Hello World” is declared into the variable S.
When you run the VBA code manually or using F5 key then, the output is written into the immediate window and file at a time is shown in folder.
The output to file is shown in the below-mentioned figure.
Printing output to file is beneficial when long text is presented.
Example #3 – Displaying the Factorial of a Number in the Immediate Window
This example illustrates the use of the debug.print statement to show factorial of a number.
Code:
To determine the factorial, three variables are considered including the count, number, and fact. For loop is taken to repeat the multiplication of fact value with count to determine factorial of the number.
Here, debug.print statement is used outside “for” loop to display the value after completion of the loop. The output is determined as.
If we use debug.print statement in inside “for” loop, the fact-value is displayed for every recurring time as shown in the figure.
Code:
Run the code by pressing F5 key and see the output in the immediate window. In this situation, we should consider the last value as the factorial of the given number.
Example #4 – Printing the Full name of the Active Workbook
This example explains how to print the current workbook name into the immediate window
The program is developed as shown in the figure.
Code:
Here ‘count’ is the variable taken to count the number of active workbooks and to display the full name of the active workbook. The full name and number of active workbooks are displayed as shown in the figure.
How to dou
Программирование макросов на VBA в Excel
Table of Contents:
У вас могут возникнуть проблемы с кодом VBA, но как вы находите проблему? Иногда вашему VBA-коду может потребоваться некоторая отладка. Продолжайте читать, чтобы обнаружить четыре наиболее распространенных метода для отладки кода Excel VBA:
Вставка функций MsgBox в разных местах вашего кода
Вставка отладки. Операции печати
Использование встроенных средств отладки Excel
Изучение вашего кода
Возможно, самая простая методика отладки просто внимательно изучает ваш код, чтобы увидеть, можете ли вы найти проблему. Этот метод, конечно, требует знаний и опыта. Другими словами, вы должны знать, что делаете. Если вам повезет, ошибка выпрыгивает прямо, и вы ударяете по лбу и говорите: «О, да! «Когда боль на лбу уменьшается, вы можете решить проблему.
Обратите внимание на использование слов: «Если вам повезет. «Это потому, что часто вы обнаруживаете ошибки, когда работаете над своей программой в течение восьми часов подряд, это 2 a. м. , и вы используете кофеин и силу воли. В такие моменты вам повезло, если вы даже можете увидеть свой код, не говоря уже об обнаружении ошибок. Таким образом, не удивляйтесь, если просто изучить ваш код недостаточно, чтобы заставить вас найти и удалить все ошибки, которые он содержит.
Использование функции MsgBox
Общей проблемой во многих программах является одна или несколько переменных, которые не принимают ожидаемые значения. В таких случаях мониторинг переменных (переменных) во время выполнения кода является полезным методом отладки. Один из способов сделать это — вставить временные функции MsgBox в свою программу. Например, если у вас есть переменная с именем CellCount, вы можете вставить следующий оператор:
Когда вы выполняете подпрограмму, функция MsgBox отображает значение CellCount.
Часто полезно отображать значения двух или более переменных в окне сообщения. Следующий оператор отображает текущее значение двух переменных: LoopIndex (1) и CellCount (72), разделенных пробелом.
Обратите внимание, что две переменные объединены с оператором конкатенации (&) и вставляют пробельный символ между ними. В противном случае окно сообщения объединяет два значения вместе, делая их похожими на одно значение. Вы также можете использовать встроенную константу vbNewLine вместо символа пробела. vbNewLine вставляет разрыв строки, который отображает текст в новой строке. Следующий оператор отображает три переменные, каждая в отдельной строке:
Использование окна сообщения для отображения значения трех переменных.
Этот метод не ограничивается мониторингом переменных. Вы можете использовать окно сообщения для отображения всех видов полезной информации во время работы вашего кода. Например, если ваш код проходит через ряд листов, следующий оператор отображает имя и тип активного листа:
Если ваше окно сообщения показывает что-то неожиданное, нажмите Ctrl + Break, и вы увидите диалоговое окно с сообщением о том, что выполнение кода было прервано, у вас есть четыре варианта:
Нажмите Продолжить. Код продолжает выполняться.
Нажмите кнопку «Конец». Выполнение прекращается.
Нажмите кнопку «Отладка». VBE переходит в режим отладки.
Нажмите кнопку «Справка». Экран справки сообщает, что вы нажали Ctrl + Break. Другими словами, это не очень полезно.
Нажатие Ctrl + Break останавливает выполнение вашего кода и дает вам несколько вариантов.
Если на клавиатуре нет клавиши Break, попробуйте нажать Ctrl + ScrollLock.
Непосредственно используйте функции MsgBox при отладке кода. Просто убедитесь, что вы удалите их после определения и исправления проблемы.
Вставка отладки. Операции печати
В качестве альтернативы использованию функций MsgBox в вашем коде вы можете вставить один или несколько временных отладок. Печатные заявления. Используйте эти инструкции для печати значения одной или нескольких переменных в окне Immediate. Вот пример, который отображает значения трех переменных:
Обратите внимание, что переменные разделяются запятыми. Вы можете отображать столько переменных, сколько хотите, с помощью одного Debug. Распечатать заявление.
Debug. Печать отправляет вывод в окно Immediate, даже если это окно скрыто. Если окно Immediate VBE не отображается, нажмите Ctrl + G (или выберите «Вид»> «Немедленное окно»). Вот некоторые результаты в окне Immediate.
Отладка. Оператор печати отправляет выходные данные в окно Immediate.
В отличие от MsgBox, Debug. Операции с печатью не останавливают ваш код. Поэтому вам нужно следить за окном Immediate, чтобы узнать, что происходит.
После отладки кода обязательно удалите все отладки. Печатные заявления. Даже крупные компании, подобные Microsoft, иногда забывают удалить их Debug. Печатные заявления. В нескольких предыдущих версиях Excel каждый раз, когда надстройка Analysis ToolPak была открыта, вы увидите несколько странных сообщений в окне Immediate. Эта проблема была окончательно исправлена в Excel 2007.
Использование отладчика VBA
Дизайнеры Excel глубоко знакомы с концепцией ошибок. Следовательно, Excel включает в себя набор средств отладки, которые могут помочь вам устранить проблемы в коде VBA.
End Sub. РИСУНОК 6. Использование метода Debug.Print для тестирования встроенных функций
РИСУНОК 6. Использование метода Debug.Print для тестирования встроенных функций.
В окне Immediate не производится перенос текста на следующую строку, поэтому объем выводимой информации по возможности следует сократить. Удалять операцииDebug.Print из кода нет необходимости, поскольку пользователь никогда не увидит окно Immediate. Однако, если количество операторов окажется слишком большим, это может несколько повлиять на производительность.
МетодDebug.Assert приостанавливает выполнение отдельной строки кода в зависимости от поставленного условия. Например, если оператор кода считывает Debug.Assert False, код приостанавливает выполнение данной строки. Это позволяет выполнять код по шагам и отладить ошибки.
Никогда не используйте в коде зарезервированное словоStop. Следует учитывать, что, если оставить это ключевое слово, выполнение кода остановится при запуске приложения пользователем. Рекомендуется всегда использовать Debug.Assert False, поскольку данный оператор всегда удаляется компилятором.
Использование окна отладки
Чтобы открыть окно Immediate, необходимо запустить редактор Visual Basic и выбрать в меню команду View | Immediate Window (Вид | Окно отладки) или нажать клавиши Ctrl+G. Окно отладки можно использовать для оценки и установки переменных, запуска функций и подпрограмм, а также для вывода результатов выраженияDebug.Print.
Для оценки переменных в окне Immediate необходимо ввести знак вопроса с именем переменной, например, ? strName. Следует также помнить, что значение переменной можно определить, задержав курсор мыши над переменной в режиме прерывания.
Изменение значения переменной
Для изменения значения переменной в окнеImmediate необходимо ввести имя переменной со знакомравенства и новым значением, например,inti = 10.
Оценка встроенных функций
Для оценки встроенных функций в окне Immediate необходимо ввести знак вопроса и имя встроенной функции, например, ? Now.
Выполнение пользовательских функций
Для запуска пользовательских функций в окне Immediate необходимо ввести знак вопроса, имя функции и соответствующие параметры, например, ? MyFunction.
Выполнение пользовательских подпрограмм
Для выполнения пользовательских подпрограмм в окне Immediate необходимо ввести имя подпрограммы и соответствующие параметры, например,MySubProcedure. Перед именем подпрограммы знак вопроса не ставится.
При запуске подпрограммы или функции в окне Immediate необходимо ввести имя подпрограммы или функции (знак вопроса перед именем подпрограммы не используется). Если подпрограмма или функция находится в модуле формы, перед именем процедуры следует ввести имя формы (например,frmTest. MySubProcedure).
Поскольку значительную часть времени разработчик проводит в работе с окном Immediate, приведенные ниже советы могут оказаться полезными.
Выполнение операторов в окне Immediate
Для выполнения оператора кода в окне отладки необходимо поместить курсор где-нибудь в операторе. Курсор не обязательно должен находиться в начале или в конце оператора кода.
Если в окне Immediate отображается несколько операторов кода, не обязательно удалять операторы, находящиеся после требуемого оператора. Достаточно поместить курсор где-нибудь в операторе кода, который необходимо выполнить, и нажать клавишу Enter.
Перемещение в окне отладки
Для передвижения курсора используются мышь и клавиши со стрелками. С помощью клавиши Home можно передвинуть курсор к началу текущей строки кода, а с помощью клавиши End — к концу строки.
Клавиши Page Up и Page Down позволяют переместиться на страницу вверх и вниз соответственно. Для установки курсора в начало окна Immediate необходимо нажать клавиши Ctrl+Home. Для перехода в конец окна отладки используется комбинация клавиш Ctrl+End.
Удаление кода в окне отладки
Для быстрого выделения всего кода в окне отладки в целях последующего удаления используется комбинация клавиш Shift+Ctrl+Home, если курсор находится в конце кода в окне Immediate. Весь код будет выделен, и можно нажать клавишу Delete для его удаления.
Если курсор находится в начале кода в окне Immediate, необходимо использоватькомбинацию клавиш Shift+Ctrl+End для выделения всего кода. Затем можно нажать клавишу Delete.
В Access 2000 очень просто заниматься отладкой приложений. Для этого нужно просто остановить выполнение кода в определенных местах и, выполняя его шаг за шагом, наблюдать за ходом выполнения.
Прерывание останавливает выполнение кода. Для установки точки прерывания необходимо поместить курсор на оператор и в меню редактора Visual Basic выбрать команду Run | Toggle Breakpoint (Выполнить | Переключить прерывания) или нажать клавишу F9. Следует помнить, что нельзя установить прерывание на пустой строке, строке комментария или строке кода, содержащей операторDim. Еще один способ установки прерывания — щелкнуть на сером левом поле окна кода рядом с соответствующей строкой кода. При этом на левой границе появится большая красная точка, которая указывает на установленную точку прерывания.
При запуске программы выполнение приостанавливается на том операторе, где установлено прерывание (рис. 7). Автоматически открывается модуль кода, и оператор кода будет выделен желтым цветом. Можно шаг за шагом проходить по коду, просматривать или менять значения переменных и т.п.
РИСУНОК 7. Выполнение кода приостановлено на точке прерывания
Для удаления точки прерывания необходимо в меню выбрать команду Run | Clear All Breakpoints (Выполнить | Убрать прерывания) илинажать клавиши Ctrl+Shift+F9.
Выполнение кода в пошаговом режиме
Когда выполнение кода приостанавливается из-за прерывания, выражение кода, выделенное желтым цветом, не выполняется. Продолжить выполнение кода можно несколькими способами.
Для выполнения одного оператора кода одновременно необходимо в меню редактора Visual Basic выбрать команду Debug | Step Into (Отладка | Построчно) или нажать клавишу F8. Построчное выполнение кода — самый эффективный способ наблюдения за выполнением программы и значениями переменных в коде.
Некоторые разработчики предпочитают пользоваться панелью инструментов Debug. Чтобы открыть панель инструментов, необходимо в меню выбрать команду View | Toolbars | Debug (Вид | Панели инструментов | Отладка). Л
Иногда одна процедура вызывает другие процедуры. Вызываемая процедура может быть абсолютно надежной (иными словами, полностью протестированной и свободной от ошибок). Для выполнения вызванной процедуры целиком, без пошагового перехода от строки к строке, необходимо в меню выбрать команду Debug | Step Over (Отладка | Выполнение блока) Shift+FS.
После того как вызванная процедура завершится, снова произойдет останов. С этого места можно продолжить построчное выполнение кода.
Предположим, в пошаговом режиме выполняется процедура, вызывающая другую процедуру. Находясь в вызванной процедуре, можно быстро закончить выполнение оставшегося кода и возвратиться в исходную процедуру. Для этого в меню необходимо выбрать пункты Debug | Step Out (Отладка | Выход из блока) или нажать клавиши Ctrl+Shift+F8. Такая опция зачастую бывает достаточно полезной.
Получение списка доступных принтеров средствами VB (VBA)
Данный код выводит список всех установленных в системе принтеров:
Результат работы макроса:
Принтер №1: PDFCreator
Принтер №2: Microsoft XPS Document Writer
Принтер №3: Microsoft Office Document Image Writer
Принтер №4: \192.168.0.1Samsung ML-2010 Series
Всего принтеров: 4
===================================
Ещё один вариант того же макроса (у меня он работает намного быстрее первого варианта):
Результат работы макроса:
Принтер №1: PDFCreator
Путь к принтеру №1: PDFCreator
Принтер №2: Microsoft XPS Document Writer
Путь к принтеру №2: Microsoft XPS Document Writer
Принтер №3: Microsoft Office Document Image Writer
Путь к принтеру №3: Microsoft Office Document Image Writer
Принтер №4: Samsung ML-2010 Series на 192.168.0.1
Путь к принтеру №4: \192.168.0.1Samsung ML-2010 Series
Всего принтеров: 4
Активный принтер: PDFCreator on NE03:
========================================
Данный код позволяет активировать виртуальный PDF-принтер в Microsoft Word:
(в случае успешной активации функция возвращает TRUE)
ВНИМАНИЕ: Для Microsoft Excel код будет немного другим (там принтеры именуются несколько иначе)
Данный код позволяет активировать виртуальный PDF-принтер в Microsoft Excel:
(в случае успешной активации функция возвращает TRUE)
- 22959 просмотров
Комментарии
Понял! Спасибо за ответ!
Ошибку с выводом на печать не отловить, — так устроена Windows
(Эксель отправляет файл на печать, — спулер печати принимает задание на печать. с точки зрения Excel, задача по выводу на печать выполнена)
Т.е. на уровне Excel ошибку не получить (о чем вам на форуме уже написали)
по какому-то из свойств можно понять распечатает принтер или нет?
нет
вот у меня к компу подключен работающий принтер,
и то, я не могу сказать, напечатает он документ или нет (зависит от наличия бумаги в лотке)
Так что проще всего вывести пользователю MSGBOX с вопросом «Распечаталось?» и вариантами ответа да / нет,
и на основании ответа пользователя продолжать работу макроса
Доброго времени суток!
У меня есть таблица, у которой перед печатью должны скрываться некоторые строки и столбцы (всегда разные, зависит от выбора пользователя).
Я построил макрос так, что сначала скрывается то, что является лишним, затем сформированная таблица идет на печать и затем производится возврат в прежнее состояние таблицы (раскрытие скрытых строк и столбцов).
Проблема образовалась в том, что когда к ПК не подключен принтер (я про реальный принтер), то выдается ошибка, что принтер неактивен (ошибка принтера). Сначала я хотел поймать эту ошибку и выдавать свое сообщение, типа «Принтер неактивен! Обратитесь к админу!» и т.д., но не смог, так как к Excel эта ошибка не имеет никакого отношения. Затем, предложили мне сначала сделать проверку на активные принтеры, но у меня в активных принтерах весит виртуальный (распечатать-то он не может), поэтому Application.ActivePrinter всегда равен этому принтеру (*PDF*). Самого принтера у меня нет.
По итогу, пока, оставил как есть, так как данная ошибка не рушит работу макроса: если принтер подключен — напечатает, если нет — выдаст сообщение об ошибке, и дальше макрос будет работать. + добавил выбор принтера Application.Dialogs(xlDialogPrinterSetup).Show, но, это окно отражает кучу лишних устройств — виртуальные принтеры, Fax и т.д. Это не очень нравится.
Но, все таки интересно, можно ли как-то ловить такие ошибки, или как-то проверять на реальное подключение к принтеру (который напечатает таблицу), или в окне Application.Dialogs(xlDialogPrinterSetup).Show отражать только раельные принтеры (а если их нет, то пусто и тогда пользователь нажмет отмену). Выше Вы предлагаете проанализировать свойства всех установленных принтеров, и отфильтруйте подходящие принтеры. Скажите пожалуйста, по какому-то из свойств можно понять распечатает принтер или нет?
Данная таблица будет использоваться на разных ПК, поэтому принтеры всегда будут разные! Вроде понятно расписал.
Ну и зачем нужен этот огромный макрос с доп. функциями,
который, ко всему прочему, не будет работать в 64-битной версии Office?
Когда оба моих макроса из 5 строк выдают тот же самый результат.
должно работать в любой версии Excel, видоизменить на то чтоб выбирал на печать нужный, а потом возвращал установленный ранее на основе этого кода, думаю труда не составит.
Спасибо за ответ, сначала так и сделал http://clip2net.com/s/1OiZ5 но изза ошибки пошёл «обходными путями», может что не включено или еще изза чего. Пишу дома (и принтеров нету кроме виртуальных Офиса) может на работе нормально сработает.
К сожалению, вряд ли смогу помочь.
Я писал этот код, ориентируясь на имена принтеров, выводимых моим Excel (версии 2003)
И нет никакой гарантии, что все версии Excel, и в любой версии Windows, будут именовать принтеры точно также.
Сделайте проще:
1) При открытии формы (событие UserForm_Initialize) заполните комбобокс списком имён принтеров,
используя цикл из моего макроса
2) При щелчке на CommandButton5 просто активируйте выбранный принтер одной строкой кода:
http://clip2net.com/s/1OiGj
Не подскажете где ошибка? Хочу на форму в Excel добавить ComboBox со списком установленных принтеров (здесь поможет ваш код) и выводить печать на выбранный принтер, но вылезает такая вот ошибка. И еще экспериментировал и выбирал различные принтеры, номер .Item(n).Name & » (Ne» & Format(n — 1, «00») & «:)» и тот номер который показывает Application.ActivePrinter не совпадают.
Проанализируйте свойства всех установленных принтеров, и отфильтруйте подходящие принтеры.
Пример кода для просмотра свойств принтеров, установленных в системе:
А вот этот код выведет список принтеров, доступных в текущий момент:
(мы в запросе указываем, что нас интересуют только принтеры со статусом Idle)
. список всех установленных в системе принтеров — это хорошо
Но, как отобразить список принтеров кроме выключенных из сети, но подключенных к компьютеру?
Опрос системы должен произойти до начала пуска печати.