Excel VBA проверить или получить настройки аппаратного ускорения и отключить настройки анимации Windows - PullRequest
0 голосов
/ 20 января 2019

У меня сложная книга Excel с макросами. У меня есть ряд клиентов, которые используют рабочую книгу в разных аппаратных средах (все на ПК с Excel 2010+). Я обнаружил, что отключение аппаратного ускорения в Excel 2013+ и отключение анимации в среде Windows значительно улучшают работу пользователя и почти исправляют ужасные белые «не отвечающие» экраны Excel или принудительное закрытие. Почему адаптер дисплея и анимация вызывают проблемы в Excel при работе на ПК с Windows, мне неясно и не имеет значения. Независимо от того, сколько электронных писем или напоминаний я отправляю своим клиентам, чтобы установить флажок «Отключить аппаратное ускорение» в параметрах Excel или отключить анимацию в настройках Windows, они неизбежно не делают этого, а затем жалуются, когда Excel запускается. Я ищу способ проверить эти настройки. Я просмотрел библиотеку приложений Excel и не увидел ничего многообещающего и удивился, можно ли вообще найти эти настройки с помощью VBA.

Я рецензировал эти статьи:

Windows: программно определить, можно ли отключить аппаратное ускорение

Определение настроек анимации Windows -Показал некоторые обещания, но не уверен, смогу ли я сделать это с помощью VBA

В частности, это настройки, которые я пытаюсь протестировать (возможность их программного изменения была бы огромным бонусом, но сейчас я просто хочу проверить их текущее значение):

Параметры Excel: Дополнительно: отключить аппаратное ускорение графики:

Excel Option to Disable hardware graphics acceleration

Windows 10 Удобство использования Настройка отображения: Показать анимацию в Windows Window 10 Ease of use display settings

Панель управления Windows 10: Параметры производительности системы: Анимированные элементы управления и элементы внутри окна Windows 10 Control Panel System Performance Options: Animate controls and elements inside window

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Я использовал предложение С. Мидена; экспортировал реестр в виде текстового файла, внес изменения в параметры Excel, снова экспортировал реестр и использовал WinMerge для сравнения двух. Найдено, что этот ключ изменен с 0 на 1 для Excel 2013+ (немного отличается для Excel 2010, не проверял 2007):

HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ Office \ (YourOfficeVersionNumber) \ Common \ Graphics \ DisableHardwareAcceleration

Я использую эту функцию Excel VBA, чтобы проверить, было ли отключено аппаратное ускорение в настройках Excel:

Function HardwareAccelerationDisabled() As String
    'Returns T if setting is disabled, F not disabled, or X if couldn't access the registry key
    On Error GoTo HardwareAccelerationDisabled_Error
    If Application.Version = 14# Then 'For Excel 2010
        HardwareAccelerationDisabled = Left(1 = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Gfx\DisableHardware"), 1)
    Else 'For Excel 2013+
        HardwareAccelerationDisabled = Left(1 = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & "\Common\Graphics\DisableHardwareAcceleration"), 1)
    End If
    On Error GoTo 0
    Exit Function

HardwareAccelerationDisabled_Error:
    HardwareAccelerationDisabled = "X"    
End Function

Еще нужно взглянуть на настройки анимации, но это аппаратное ускорение было моей самой большой проблемой.

0 голосов
/ 20 января 2019

Похоже на параметр реестра Параметры реестра для рендеринга графики

Знаете, как записать в реестр? Здесь должны быть примеры, StackOverflow.

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

На самом деле это может помочь, Проблемы с отображением в клиентских приложениях Office Говорит, что вы делаете это Групповая политика Это , управляемое таким образом

В других местах StackOverflow другие изменяют групповую политику через командную строку , чтобы вы могли писать VBA для оболочки в командную строку.

...