Outlook default zoom - VBA

Узнай цену своей работы

Формулировка задачи:

Всем привет. Пытаюсь настроить масштабирование по-умолчанию для Области чтения в Outlook. Это известная и наболевшая проблема - масштаб просто не запоминается при открытии нового письма. Мелкософт просто игнорирует ситуацию уже больше 5 лет. На stackoverflow я нашёл VBA скрипт, который должен решить проблему, но он, судя по всему, содержит ошибки. Я, увы, не специалист по VBA и моих знаний хватило только на то, чтобы найти местоположение проблемы. Скрипт привожу ниже:
Листинг программы
  1. Option Explicit
  2. Dim WithEvents objInspectors As Outlook.Inspectors
  3. Dim WithEvents objOpenInspector As Outlook.Inspector
  4. Dim WithEvents objMailItem As Outlook.MailItem
  5. Private Sub Application_Startup()
  6. Set objInspectors = Application.Inspectors
  7. End Sub
  8.  
  9. Private Sub Application_Quit()
  10. Set objOpenInspector = Nothing
  11. Set objInspectors = Nothing
  12. Set objMailItem = Nothing
  13. End Sub
  14. Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector)
  15. If Inspector.CurrentItem.Class = olMail Then
  16. Set objMailItem = Inspector.CurrentItem
  17. Set objOpenInspector = Inspector
  18. End If
  19. End Sub
  20. Private Sub objOpenInspector_Close()
  21. Set objMailItem = Nothing
  22. End Sub
  23. Private Sub objOpenInspector_Activate()
  24. Dim wdDoc As Word.Document
  25. Set wdDoc = objOpenInspector.WordEditor
  26. wdDoc.Windows(1).Panes(1).View.Zoom.Percentage = 140
  27. End Sub
При компиляции вылезает ошибка: User-defined type not defined. Как я понимаю, проблема с объявлением переменной

wdDoc

в строчке

Dim wdDoc As Word.Document

. Компилятор не распознаёт объект типа Word, хотя в референсах подключена Microsoft Office 14.0 Object Library. То ли синтаксис создания объекта должен быть другой, то ли ещё чего. Я уже обгуглился, товарищи. Помогите понять как правильно завести скрипт.

Решение задачи: «Outlook default zoom»

textual
Листинг программы
  1. Option Explicit
  2.  Dim WithEvents objInspectors As Outlook.Inspectors
  3.  Dim WithEvents objOpenInspector As Outlook.Inspector
  4.  Dim WithEvents objMailItem As Outlook.MailItem
  5.  Dim WithEvents myOlExp As Outlook.Explorer
  6.  Dim sExplorer As Object
  7.  Dim Document As Object
  8.  Dim Msg
  9. 'Sets the zoom to the same value
  10. ' To use different values, replace msgzoom with the number
  11. ' in openinspector and selectchange macros
  12. Const MsgZoom = 110
  13.  
  14. Private Sub Application_Startup()
  15.  Set objInspectors = Application.Inspectors
  16.  Set myOlExp = Application.ActiveExplorer
  17.  Set sExplorer = CreateObject("Redemption.SafeExplorer")
  18.  End Sub
  19.  
  20. Private Sub Application_Quit()
  21.  Set objOpenInspector = Nothing
  22.  Set objInspectors = Nothing
  23.  Set objMailItem = Nothing
  24.  End Sub
  25.  
  26. Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector)
  27.  If Inspector.CurrentItem.Class = olMail Then
  28.  Set objMailItem = Inspector.CurrentItem
  29.  Set objOpenInspector = Inspector
  30.  
  31. End If
  32.  End Sub
  33.  Private Sub objOpenInspector_Close()
  34. Set objMailItem = Nothing
  35.  End Sub
  36.  
  37. Private Sub objOpenInspector_Activate()
  38. Dim wdDoc As Word.Document
  39.  Set wdDoc = objOpenInspector.WordEditor
  40.  wdDoc.Windows(1).Panes(1).View.Zoom.Percentage = MsgZoom
  41.  
  42. End Sub
  43. Public Sub delay(PauseTime As Single)
  44.     Dim start As Single
  45.     start = Timer
  46.    Do While Timer < start + PauseTime
  47.     If (Timer < start) Then 'midnight crossover
  48.        start = start - (86400 + 1)
  49.     End If
  50.     DoEvents   ' Yield to other processes.
  51.  
  52.     Loop
  53. End Sub
  54. Private Sub myOlExp_SelectionChange()
  55. On Error GoTo ErrHandler:
  56.  Set Msg = Application.ActiveExplorer.Selection(1)
  57.  Application.ActiveExplorer.RemoveFromSelection (Msg)
  58.  Application.ActiveExplorer.AddToSelection (Msg)
  59.  sExplorer.Item = Application.ActiveExplorer
  60.  Set Document = sExplorer.ReadingPane.WordEditor
  61.  delay (0.2)
  62.  Document.Windows.Item(1).View.Zoom.Percentage = MsgZoom
  63. Exit Sub
  64.  
  65. ErrHandler:
  66.     Exit Sub
  67.  
  68. End Sub

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы