Если вы используете макросы для печати своих листов, вы уже знаете, что макрос может указывать фактический принтер, на который следует отправлять выходные данные.

Что, если вы хотите также указать конкретный лоток для бумаги, который будет использоваться на этом принтере? К сожалению, это становится немного липкой калиткой.

Проблема в том, что когда вы нажимаете кнопку «Параметры» в диалоговом окне «Параметры страницы», чтобы указать, какой лоток для бумаги использовать, то, что вы видите, полностью находится под контролем драйвера вашего принтера, а не под управлением Excel.

Что это значит для тебя? Это означает, что в макросе Excel нет команд, которые можно использовать для указания лотка принтера. Однако есть некоторые обходные пути, которые вы можете попробовать. Первый обходной путь — просто определить разные определения принтеров в Windows, каждое из которых предназначено для использования определенного лотка принтера. Выполните следующие общие шаги:

  1. Определите, сколько лотков для бумаги вы хотите использовать в принтере.

  2. Определите новый принтер для каждого лотка для бумаги, который вы хотите использовать. Например, если вы хотите использовать три разных лотка для бумаги, вы должны определить три принтера, каждый с именем, представляющим лоток для бумаги.

  3. Щелкните правой кнопкой мыши определение принтера и измените свойства принтера, чтобы он печатал на желаемом лотке для бумаги.

  4. Повторите шаг 3 для каждого из других определений принтера, убедившись, что вы указали разные лотки для бумаги для каждого из них.

На этом этапе у вас настроено несколько определений принтеров, и каждое будет печатать на разных лотках одного и того же принтера. В Excel вы можете указать желаемый принтер в макросе, чтобы распечатка перешла к желаемому определению принтера и, следовательно, к желаемому лотку для бумаги. Единственным недостатком этого решения, конечно же, является то, что оно требует довольно небольшой работы по настройке. Если вы работаете в офисе с 50 пользователями, это означает, что вам нужно убедиться, что все 50 имеют каждый принтер, определенный, как описано выше.

Другой обходной путь заключается в использовании в макросе инструкции SendKeys. Вы можете найти информацию о SendKeys в онлайн-справке VBA, доступной в Excel, но в основном он заполняет буфер клавиатуры серией нажатий клавиш, точно так же, как они будут набираться пользователем. Таким образом, теоретически вы можете настроить макрос для имитации нажатий клавиш, которым вы будете следовать, чтобы открыть диалоговое окно «Параметры страницы», щелкнуть «Параметры» и выбрать другой лоток принтера.

Однако с SendKeys есть потенциальная проблема, и она серьезная. Это может быть ненадежным, потому что нет способа гарантировать, что нажатия клавиш действительно идут туда, куда вы хотите. В многопоточной операционной системе (например, Windows) какой-то другой процесс может вмешаться и сорвать выполнение команд. Кроме того, если SendKeys работает на вашем компьютере, он может не работать на чужом компьютере, если у них нет той же версии Excel, того же принтера и той же версии драйвера принтера.

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (7010) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Specifying_a_Paper_Tray_in_a_Macro [Указание лотка для бумаги в макросе].