Как использовать оператор If-Then в VBA, чтобы открыть один из сохраненных двух файлов .MSG? - PullRequest
0 голосов
/ 23 июня 2019

Я хочу условное условие if-then, чтобы определить, имеет ли ячейка определенное значение, и открыть на моем диске уже сохраненную электронную почту Outlook в формате MSG

Я считаю, что моя структура условных выражений правильная, но я не могу открыть файлы .msg, как если бы я работал с книгами

Sub OpenMail()

Workbooks("MyBook").Sheets("Sheet1").Activate

Dim MyItem1 As Outlook.MailItem
Dim MyItem2 As Outlook.MailItem


If Range("A1").Value > 0 Then 
      Set MyItem1.Open = "C:\Users\jeff\OneDrive\Documents\Email #1.msg"
      MyItem1.Display

Else If Range("A1").Value < 0 Then
      Set MyItem2.Open = "C:\Users\jeff\OneDrive\Documents\Email #2.msg"
      MyItem2.Display
Else 
      MsgBox("No items to open")

End If

End Sub

Когда я запускаю его, он выдает ошибку времени выполнения 91

Переменная объекта или переменная блока не установлена ​​

Я подключил Outlook в справочной библиотеке (в разделе «Инструменты»)

Есть мысли? Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Попробуйте вместо этого затемнить как объект. Кроме того, вам может потребоваться установить в сеансе Outlook ссылку на Outlook, если она уже открыта, или открыть Outlook, если она еще не открыта.

Dim oApp As Object
Dim oItem1 As Object
Dim oItem2 As Object

Set oApp = CreateObject("Outlook.Application")
'oApp.Session.Logon -> if needed, uncomment

Set oItem1 = oApp.CreateItemFromTemplate("C:\test1.msg")
Set oItem2 = oApp.CreateItemFromTemplate("C:\test2.msg")

'Condition
'if true
oItem1.Display 
'else
oItem2.Display
'end if

End Sub
0 голосов
/ 23 июня 2019

Сначала необходимо создать сам объект Outlook, а затем использовать его для открытия сообщения.

Вы устанавливаете Mailitem, чтобы быть вновь открытым сообщением:

Public Sub foo()

Dim objOL As Outlook.Application
Set objOL = CreateObject("Outlook.Application")

Dim MyItem1 As Outlook.MailItem
Dim MyItem2 As Outlook.MailItem

Workbooks("MyBook").Sheets("Sheet1").Activate

If Range("A1").Value > 0 Then

      Set MyItem1 = objOL.Session.OpenSharedItem("C:\Users\jeff\OneDrive\Documents\Email #1.msg")

      MyItem1.Display

ElseIf Range("A1").Value < 0 Then
      Set MyItem2 = objOL.Session.OpenSharedItem("C:\Users\jeff\OneDrive\Documents\Email #2.msg")
        MyItem2.Display
Else
      MsgBox ("No items to open")

End If

set objOL = Nothing

End Sub

Также, как примечание, в выражении ElseIf нет пробела (хотя это может быть просто проблема копирования и вставки).

Надеюсь, это поможет!

...