Что такое “Хост драйвера печати для приложений” и почему он замедляет мои макросы Excel?

Вопрос или проблема

Я тестировал это на нескольких компьютерах с Windows 10, работающих на последней версии Excel (подписка 365), при этом Bluebeam PDF и Microsoft XPS Document writer были установлены в качестве принтера по умолчанию, и результат был одинаковым. Тем не менее, я не могу постоянно воспроизводить эту проблему. Когда я использую файл Excel с макросами, в котором есть некоторые настройки страницы и другие коды форматирования, диспетчер задач показывает, что открыты Microsoft Excel (32 бит) и “Хост драйвера печати для приложений”, и Excel, как правило, зависает или сообщает о том, что не отвечает. Я никогда не получаю ошибку “программа перестала работать”, и в конечном итоге (это занимает несколько минут) Excel возвращается. Даже если у меня открыто несколько файлов Excel, он просто показывает эти две строки под Microsoft Excel (32 бит):

Диспетчер задач: Excel и Хост драйвера печати для приложений

Если я щелкаю правой кнопкой мыши и завершаю процесс “Хост драйвера печати для приложений” вручную, Excel возвращается довольно быстро и также показывает все открытые файлы Excel:
Диспетчер задач: после принудительной остановки процесса драйвера печати

Насколько я понимаю, хост драйвера печати для приложений предназначен для связи 64-разрядных принтеров ОС с 32-разрядным офисом. Верно? Я использую application.printcommunications = false в своем коде VBA Excel, поэтому мне интересно, не вызывает ли это проблему, когда я устанавливаю printcommunications обратно в true. Я собираюсь просмотреть свой код VBA и закомментировать все коды настройки страниц, чтобы увидеть, поможет ли это. Как я уже говорил, я не могу постоянно видеть Хост драйвера печати в диспетчере задач, он, похоже, появляется эпизодически и зависает компьютер моего пользователя.

Есть ли дополнительная информация о том, что делает “Хост драйвера печати для приложений” и что вызывает его запуск? Есть ли способ предотвратить его загрузку? Я просто не могу найти информацию о том, что он делает и когда это происходит.

Цитата
Хост драйвера печати для приложений предназначен для связи 64-разрядных принтеров ОС с 32-разрядным офисом. Верно?

Да.
Вы не одиноки с такой проблемой. Проверьте https://answers.microsoft.com/en-us/msoffice/forum/all/mircosoft-excel-365-pro-plus-hangs-all-the-time/ea49ac30-24ea-48d7-bc66-c95ea172f458?page=1

Я советую протестировать MS Excel без установленных очередей печати и драйверов, программные принтеры могут вызывать эту проблему.

У меня уже какое-то время есть эта проблема. В последнее время (последние несколько недель) я стал замечать, что использование моего графического процессора 3D увеличивается до 25% всякий раз, когда происходит эта проблема. Я могу остановить процесс хоста драйвера печати, но это, похоже, не оказывает никакого воздействия.

Тем не менее, мне удалось немного снизить это, сбросив свой видеодрайвер, используя сочетание клавиш Ctrl+Shift+Win+B (документировано здесь и здесь). Экран на секунду стал черным, и когда он вернулся, я увидел, что использование моего графического процессора снова в норме, и я снова смог навигировать по таблице Excel.

В следующий раз, когда это произойдет, я попробую это сочетание клавиш перед остановкой процесса хоста драйвера печати, чтобы посмотреть, повлияет ли это как-то.

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

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

Правка: Я использую 32-разрядный Excel, Office 365 Версия 2008.

Ответ или решение

Что такое "Print driver host for applications" и почему он замедляет выполнение макросов в Excel?

"Print driver host for applications" (хост драйвера печати для приложений) — это компонент Windows, предназначенный для управления взаимодействием между принтерами и приложениями, которые используют 32-битные версии Microsoft Office, такие как Excel. Этот процесс отвечает за отправку данных на печать, особенно в среде, где установлены 64-битные принтеры, что создает необходимость в посреднике для качественной обработки печатных задач.

Причины замедления работы макросов в Excel

  1. Печать и взаимодействие с драйвером: Когда вы запускаете макрос в Excel, который включает в себя код для настройки печати, включая параметры страницы и форматирования, Excel обращается к "Print driver host for applications" для выполнения этих задач. Если принтер или его драйвер работает некорректно или перегружен, это может привести к зависаниям Excel.

  2. Проблемы с совместимостью: Поскольку у вас используется 32-битный Excel на 64-битной операционной системе, иногда возникают конфликты между ими, особенно если установлены различные виртуальные принтеры, такие как Bluebeam PDF или Microsoft XPS Document Writer.

  3. Нагрузки на процессор и GPU: Как вы отметили, иногда происходит всплеск использования графического процессора. Это может указывать на то, что Excel — особенно с активными макросами или сложными форматированиями — требует значительных ресурсов. Когда "Print driver host" также активно, это может дополнительно загружать систему, что ведёт к зависаниям.

Возможные решения и рекомендации

  1. Отключение виртуальных принтеров: Попробуйте временно удалить или отключить все ненужные драйверы принтеров, включая виртуальные принтеры, чтобы посмотреть, повлияет ли это на производительность Excel. Это может помочь изолировать проблему и снизить нагрузки на "Print driver host".

  2. Анализ и оптимизация кода VBA: Использование Application.PrintCommunication = False отключает обработку печатных команд, что может быть полезно для предотвращения взаимодействия с драйвером во время крупных операций. Убедитесь, что вы восстанавливаете Application.PrintCommunication = True после завершения задач, чтобы избежать неожиданных зависаний.

  3. Мониторинг загрузки системы: Используйте диспетчер задач для отслеживания процессов, связанных с Excel и "Print driver host for applications". Обратите внимание на использование ресурсов и загрузку в моменты зависаний. Это может помочь в дальнейшем понимании поведения системы.

  4. Обновление драйверов и системного ПО: Убедитесь, что все драйверы принтеров и сама Windows обновлены до последней версии. Таким образом, вы можете избежать известных ошибок, которые могли бы вызвать проблемы.

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

  6. Обновите графические драйвера: Если у вас есть возможность, убедитесь, что драйвера вашей видеокарты также обновлены. Как вы заметили, иногда перезагрузка драйвера графики может помочь.

Завершение

Ситуация, которую вы описали, может возникать из-за нескольких факторов, включая конфликты между драйверами, перегрузку системы и код VBA. Важным шагом станет оптимизация используемых макросов и применение более легковесных операций, а также мониторинг активности ресурсов. Если, несмотря на все попытки, проблема сохраняется, возможно, стоит рассмотреть возможность перехода на 64-битный вариант Office, особенно если обрабатываются большие объемы данных.

Оцените материал
Добавить комментарий

Капча загружается...