Спасибо ikki за подробные объяснения, используя Ваши подсказки решил свою задачу:
Мне нужно было чтобы при открытии любого эксель файла (а не только нового файла как в примере выше) его масштаб устанавливался в 75%
Вот как это решилось:
Получилось и в офисе2016, проблема была в том что в офисе2016 нужно обязатьльно проверять на "If (str <> "PERSONAL.XLSB") Then"
А в офисе2007 и без этого работало
Весь нижеследующий текст вставляется в PERSONAL.XLSB в раздел ЭтаКнига
Код |
---|
'объявляем переменную нужного типа с поддержкой событий
Public WithEvents appALEX As Application
'при открытии файла Personal (=запуске excel) присваиваем этой переменной ссылку на приложение
Private Sub Workbook_Open()
Set appALEX = Application
End Sub
'процедура, обрабатывающая событие открытия книги
Private Sub appALEX_WorkbookOpen(ByVal Wb As Workbook)
Dim str As String
str = Wb.Name
If (str <> "PERSONAL.XLSB") Then
'MsgBox ("Открытие книги")
'MsgBox (str)
Range("A1").Select
Wb.Windows(1).Zoom = 75
End If
End Sub |
Теперь при открытии абсолютно любого эксель файла его масштаб автоматически ставится в 75%
Это нужно когда в день приходится просмотреть несколько десятков бланков заказа от клиентов и они присылают их в разных масштабах, кто 100, кто 200, и т.п. А эксель еще и на удаленной машине, и при после открытия файла подвисает на 20-30 секунд. И после этого можно было только зайти в масштабирование таблицы и его поменять. Теперь он открывает сразу все в нужном масштабе, когда весь бланк целиком на экране. Он и после так же подвисает на 20-30сек, но это уже не страшно, т.к. бланк полностью видно.
Добавил еще Range("A1").Select чтобы бланк заказа всегда открывался сверху, на этом скриншоте этого еще нет:
Может не самый оптимальный и правильный вариант, но он работает!
