Указание лотка для бумаги в макросе

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

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

  • Если вы откроете диалоговое окно Word Options и нажмете Advanced, в В группе «Печать» можно указать лоток по умолчанию.
  • Если вы отобразите вкладку «Макет страницы» на ленте, а затем щелкните значок в правом нижнем углу группы «Параметры страницы», вы увидите параметр «Параметры страницы» чат. На вкладке «Источник бумаги» вы можете указать, какой лоток для бумаги использовать для первой страницы, а какой – для последующих страниц.
  • Если вы нажмете Ctrl + P , чтобы print, а затем щелкните Свойства, вы можете часто (в зависимости от вашего принтера) порыться и выбрать лоток для бумаги.

Таким образом, в Word есть два места, где вы можете указать лотки для бумаги, и в вашем принтере может быть отдельное место для установки лотка для бумаги. Эта последняя область настроек (с помощью кнопки «Свойства») находится за пределами «досягаемости» VBA – диалоговое окно отображает настройки в драйвере принтера, а не в самом Word.

Что еще хуже, есть нет четкого объяснения того, какие настройки имеют приоритет в том или ином задании на печать. Переопределяют ли настройки в диалоговом окне «Параметры страницы» настройки драйвера принтера? Параметр драйвера принтера имеет приоритет над параметром диалогового окна «Параметры Word»? Как настройка диалогового окна «Параметры Word» связана с настройками страницы? Вы уловили идею; множество настроек в сочетании с капризами различных настроек драйвера принтера и возможностей принтера могут привести к путанице; то, что может работать в одном сочетании условий, может не работать в другом.

При этом есть несколько подходов, которые вы можете попробовать, чтобы управлять выбором лотка для бумаги с помощью макроса. Важно помнить, что ваш макрос может указывать параметры в диалоговом окне «Параметры Word», а также в диалоговом окне «Параметры страницы». Однако ваш макрос не может указывать параметры, доступные через кнопку «Свойства» в диалоговом окне «Печать». (Подробнее об этом чуть позже.)

Если вы хотите установить параметры панели настроек страницы, вы можете сделать это с помощью макроса, подобного следующему:

  Sub CustomPageSetup () Dim strTrayFirst As String Dim strTrayOther As String Dim lngTrayFirst As Long Dim lngTrayOther As Long 'Другой код настройки находится здесь strTrayFirst = System. PrivateProfileString (strIniFile, _ "Лотки для принтеров", "Сначала письмо") Если strTrayFirst  "" Затем выберите регистр strTrayFirst Case "Автоматическая подача листов" lngTrayFirst = wdPrinterAutomaticSheetFeed Case "Default Bin" lngTrayFirst = wdPrinterngTrayFirstBin "Case  wdPrinterLargeCapacityBin Case "Large Format Bin" lngTrayFirst = wdPrinterLargeFormatBin Дело "Нижняя Bin" lngTrayFirst = wdPrinterLowerBin Case "Ручная подача" lngTrayFirst = wdPrinterManualFeed Дело "Средний Bin" lngTrayFirst = wdPrinterMiddleBin Case "Верхний Bin" lngTrayFirst = wdPrinterUpperBin Case Else lngTrayFirst = wdPrinterLowerBin End Select End  Если strTrayOther = System.PrivateProfileString (strIniFile, _ "Лотки для принтеров", "Letter Other") Если strTrayOther  "", тогда выберите регистр strTrayOther Case "Автоматическая подача листов" lngTrayOther = wdPrinterAutomaticSheetFeed Case "Папка по умолчанию" lngTrayFirst =  Емкость Bin "lngTrayOther = wdPrinterLargeCapacityBin Case" Large Fo  rmat Bin "lngTrayOther = wdPrinterLargeFormatBin Case" Lower Bin "lngTrayOther = wdPrinterLowerBin Case" Manual Feed "lngTrayOther = wdPrinterManualFeed Case" Middle Bin "lngTrayOther = wdPrinterPrinterMidraydleBin Case с lngTrayOther = wdPrinterPrinterMidraydleBin Case с верхним регистром.  PageSetup .FirstPageTray = lngTrayFirst .OtherPagesTray = lngTrayOther End WithEnd Sub 

Этот макрос, несмотря на его длину, устанавливает только два параметра: параметр «Первая страница» и параметр «Другие страницы» на вкладке «Источник бумаги» страницы. Диалоговое окно настройки. Макрос также не является полным, это лишь пример того, как фактическая «настройка» может быть выполнена в вашем собственном макросе. Этот конкретный код считывает две настройки из файла INI (имя файла указывается в строке strIniFile), а затем выполняет настройки на основе полученных значений. Очевидно, вам потребуется указать имя INI-файла, который вы хотите использовать, а также убедиться, что он настроен так, чтобы содержать правильную информацию в правильном формате. (Настройка файлов INI выходит за рамки этого совета, но много информации доступно по этой теме в другом месте.) После того, как настройки считываются из файла INI, они переводятся в настройки, которые Word может понять, а затем в финале с помощью … Конец Со структурой изменения диалогового окна вносятся.

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

  1. Определите, сколько лотков для бумаги вы хотите использовать на принтере.
  2. Определите новый принтер в Windows для каждой бумаги. лоток, который вы хотите использовать. Например, если вы хотите использовать три разных лотка для бумаги, вы должны определить три принтера, каждый с именем, представляющим лоток для бумаги.
  3. Щелкните правой кнопкой мыши определение принтера и измените свойства принтер, чтобы он печатал на желаемый лоток для бумаги.
  4. Повторите шаг 3 для каждого из других определений принтера, убедившись, что вы указали разные лотки для бумаги для каждого из них.

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

Помните, что можно указать лоток для бумаги, который будет использоваться Word пользователем путем выбора одной или нескольких настроек в различных диалоговых окнах, как подробно описано в первой части этого совета. Из-за этого некоторые люди успешно использовали оператор SendKeys для имитации нажатия клавиш, которые пользователь использовал бы для указания лотка для бумаги. (Вы можете найти информацию о SendKeys в онлайн-справке VBA, доступной в Word.)

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

Суть в том, что, к сожалению, не существует универсального решения для всех. выбор лотка для бумаги с помощью макроса. Решение, которое работает для одного человека, может не работать для другого. По этой причине вам нужно будет поэкспериментировать, чтобы увидеть, какое решение подойдет вам лучше всего, но не ожидайте, что оно сработает для всех остальных.

Оцените статью
Frestage.ru
Добавить комментарий