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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы