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