К сожалению, если рабочая книга открыта, изменение параметра View
для листа, отличного от активного листа, невозможно.
xlNormalView
является частью типа XlWindowView и как можно прочитать на его странице MSDN, это для указания представления, отображаемого в окне (а не на рабочем листе).Следовательно, вы можете изменить это свойство только для объекта окна, и затронутый лист будет активным.
Альтернативные свойства внутри объекта Window
также не помогают.Например, если вы наберете
Dim wsv As WorksheetView
wsv = ActiveWindow.SheetViews.Item("Sheet1")
, а затем наберете wsv.
, чтобы посмотреть доступные свойства в раскрывающемся списке Intellisense, вы увидите только следующие
![enter image description here](https://i.stack.imgur.com/lapwz.png)
, которая не включает ничего, что могло бы сделать эквивалент свойства View
для одного рабочего листа.
Потенциальный обходной путь, если рабочая книга закрыта
Зная, что настройка View
отличается от одного листа к другому, Excel должен где-то хранить информацию.Это где-то XML-файл, который включен в файл Excel (доступ к нему можно получить, изменив расширение на .zip).
Например, если лист (с кодовым именем Sheet1) был сохранен в Page BreakВ режиме предварительного просмотра XML-файл для этого листа будет содержать следующее:
<sheetPr codeName="Sheet1"/><dimension ref="A1"/>
</sheetViews><sheetView tabSelected="1" view="pageBreakPreview" workbookViewId="0"/>
Итак, если вам нужно пройти через много листов и вы хотите увеличить скорость своего кода, не активируяПо одному листу за раз, вы можете закодировать что-нибудь, что закроет книгу, разархивирует ее, отредактирует XML, чтобы изменить параметры просмотра для всех листов, а затем повторно заархивирует его перед повторным открытием.Ваш код выполняется на небольшом количестве листов, это, вероятно, не стоит проблем.