Outlook default zoom - VBA
Формулировка задачи:
Всем привет.
Пытаюсь настроить масштабирование по-умолчанию для Области чтения в Outlook.
Это известная и наболевшая проблема - масштаб просто не запоминается при открытии нового письма.
Мелкософт просто игнорирует ситуацию уже больше 5 лет.
На stackoverflow я нашёл VBA скрипт, который должен решить проблему, но он, судя по всему, содержит ошибки.
Я, увы, не специалист по VBA и моих знаний хватило только на то, чтобы найти местоположение проблемы. Скрипт привожу ниже:
При компиляции вылезает ошибка: User-defined type not defined.
Как я понимаю, проблема с объявлением переменной
wdDoc
в строчкеDim wdDoc As Word.Document
. Компилятор не распознаёт объект типа Word, хотя в референсах подключена Microsoft Office 14.0 Object Library. То ли синтаксис создания объекта должен быть другой, то ли ещё чего. Я уже обгуглился, товарищи. Помогите понять как правильно завести скрипт.Решение задачи: «Outlook default zoom»
textual
Листинг программы
Option Explicit Dim WithEvents objInspectors As Outlook.Inspectors Dim WithEvents objOpenInspector As Outlook.Inspector Dim WithEvents objMailItem As Outlook.MailItem Dim WithEvents myOlExp As Outlook.Explorer Dim sExplorer As Object Dim Document As Object Dim Msg 'Sets the zoom to the same value ' To use different values, replace msgzoom with the number ' in openinspector and selectchange macros Const MsgZoom = 110 Private Sub Application_Startup() Set objInspectors = Application.Inspectors Set myOlExp = Application.ActiveExplorer Set sExplorer = CreateObject("Redemption.SafeExplorer") End Sub Private Sub Application_Quit() Set objOpenInspector = Nothing Set objInspectors = Nothing Set objMailItem = Nothing End Sub Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector) If Inspector.CurrentItem.Class = olMail Then Set objMailItem = Inspector.CurrentItem Set objOpenInspector = Inspector End If End Sub Private Sub objOpenInspector_Close() Set objMailItem = Nothing End Sub Private Sub objOpenInspector_Activate() Dim wdDoc As Word.Document Set wdDoc = objOpenInspector.WordEditor wdDoc.Windows(1).Panes(1).View.Zoom.Percentage = MsgZoom End Sub Public Sub delay(PauseTime As Single) Dim start As Single start = Timer Do While Timer < start + PauseTime If (Timer < start) Then 'midnight crossover start = start - (86400 + 1) End If DoEvents ' Yield to other processes. Loop End Sub Private Sub myOlExp_SelectionChange() On Error GoTo ErrHandler: Set Msg = Application.ActiveExplorer.Selection(1) Application.ActiveExplorer.RemoveFromSelection (Msg) Application.ActiveExplorer.AddToSelection (Msg) sExplorer.Item = Application.ActiveExplorer Set Document = sExplorer.ReadingPane.WordEditor delay (0.2) Document.Windows.Item(1).View.Zoom.Percentage = MsgZoom Exit Sub ErrHandler: Exit Sub End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д