VBA - сверните Word, как только вы откроете документ - PullRequest
0 голосов
/ 03 ноября 2018

В Excel-VBA вы можете свернуть приложение Excel после открытия рабочей книги:

Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
End Sub

В Word-VBA я пробовал этот код, но он не работал:

Private Sub Document_Open()
    Application.WindowState = wdWindowStateMinimize
End Sub

После открытия документа следует свернуть приложение Word.

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

В отличие от документации Excel, документация Word Свойство Application.WindowState говорит о том, что состояние Windows может только быть установлен с активным окном:

Необработанное исключение дало лучшее описание Application.WindowState.

Private Sub Document_Open()
    ActiveWindow.WindowState = wdWindowStateMinimize
End Sub
0 голосов
/ 03 ноября 2018

Хорошо, после некоторого тестирования я запустил его, но это немного странно. Кажется, это проблема синхронизации.

Это работает:

Использование DoEvents два раза всегда работает в моих тестах. Только одного DoEvents недостаточно.

Информация из документации Microsoft о DoEvents:

Обеспечивает выполнение, чтобы операционная система могла обрабатывать другие события.

Private Sub Document_Open()
    DoEvents: DoEvents

    Application.WindowState = wdWindowStateMinimize
End Sub

Это тоже не работает:

Итак, я подумал о добавлении задержки, используя процедуру API Sleep и вызвал это и DoEvents в цикле. Но это не сработало.

Private Declare PtrSafe Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As LongPtr)

Private Sub Document_Open()
    Dim index As Integer
    For index = 1 To 5
        DoEvents
        Sleep 50
    Next index

    Application.WindowState = wdWindowStateMinimize
End Sub
0 голосов
/ 03 ноября 2018

В отличие от документации Excel, документация Word свойства Application.WindowState говорит, что состояние окон можно установить только с активным окном:

Невозможно установить состояние неактивного окна. Используйте метод Активировать, чтобы активировать окно до установки состояния окна.

Так что, возможно, вы сначала попытаетесь позвонить Application.Activate и посмотреть, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...