В коде VBA для правила Outlook, как использовать / ссылаться на электронную почту, вызвавшую триггер - PullRequest
0 голосов
/ 16 ноября 2018

Я создал правило для запуска сценария, когда письма имеют определенные заголовки.Мой скрипт пытается получить содержимое таблицы Excel из электронного письма и сохранить его локально для дальнейшей обработки.

Ниже приведен фрагмент, который я нашел и использовал: https://social.msdn.microsoft.com/Forums/en-US/22631e7e-53df-47c4-b625-22c9e935f02b/copy-a-table-from-body-of-an-email-to-excel-spreadsheet?forum=outlookdev

Это работаеткогда я использую Application.ActiveExplorer.Item, то есть в электронном письме, которое открыто в момент запуска.

Однако я хочу выполнить приведенное ниже действие для электронного письма, которое его вызвало.Я пытался следовать Как ссылаться на почту, которая вызвала макрос outlook? и их логику ByRef, но у меня это не сработало.

Может кто-нибудь посоветовать, пожалуйста, как мне получитьтекст таблицы с помощью приведенной ниже логики GetInspector.WordEditor в сообщении триггера?Спасибо!

Sub getDailyCollMV(ByRef Item As Outlook.MailItem)
Dim r As Object  'As Word.Range
Dim doc As Object 'As Word.Document
Dim xlApp As Object, wkb As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set wkb = xlApp.Workbooks.Add
xlApp.Visible = False
xlApp.DisplayAlerts = False

Dim wks As Object
Set wks = wkb.Sheets(1)

For Each ItemVal In Application.ActiveExplorer.Item
Set doc = ItemVal.GetInspector.WordEditor
    For x = 1 To doc.tables.Count
     Set r = doc.tables(x)
        r.Range.Copy
       wks.Paste
       wks.Cells(wks.Rows.Count, 1).End(3).Offset(1).Select
    Next
Next

1 Ответ

0 голосов
/ 17 ноября 2018

Заменить строки

For Each ItemVal In Application.ActiveExplorer.Item
Set doc = ItemVal.GetInspector.WordEditor

на

Set doc = Item.GetInspector.WordEditor
...