У меня появилось несколько писем (каждый день я получаю 3 письма для заказов на 3 категории). Тема электронной почты находится в формате:
" ЭКСТРАКТЫ ЗАКАЗОВ - [Категория] - [Дата]".
Где [Категория] может быть Category 1
, Category 2
или Category 3
. [Дата] - это дата отправки электронной почты в формате DD/MM/YYYY.
У меня есть настройка правила для поиска " Заказы", затем вызывается код ниже.
Я хочу запустить Complete.bat
после того, как все вложения электронной почты были сохранены, и я хочу только один раз вызвать его.
Я попытался сделать это, создав еще один подканал saveAttachtoDisk_CATEGORY1(itm)
, который вызывается только тогда, когда он находит " Категория 1" в теме. Затем он сохраняет вложение, а также ищет категорию 1 в объекте И также выполняет поиск вчерашней даты.
Я хочу лучшее решение, которое не зависит от даты. Глобальная переменная может работать там, где я устанавливаю переменную равной 1, затем запускается Complete.bat
, а затем в будущем, если переменная = 1, тогда не запускайте Complete.bat
. Не знаете, куда поместить эту переменную (глобальная переменная?) Поскольку оба вспомогательных модуля кажутся неправильным местом, чтобы поместить это и ссылаться на него.
Оба этих двух модуля сохраняются в разделе "Модули" Microsoft Outlook VBA.
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim SaveFolder As String
SaveFolder = "D:\Orders\"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile SaveFolder & "\" & objAtt.DisplayName
objAtt.Delete
Next
itm.Save
End Sub
Другой модуль:
Public Sub saveAttachtoDisk_CATEGORY1(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim SaveFolder As String
SaveFolder = "D:\Orders\"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile SaveFolder & "\" & objAtt.DisplayName
objAtt.Delete
Next
itm.Save
If InStr(1, itm.Subject, "ORDERS EXTRACT - Category 1 -" & Format(Date, "dd/mm/yyyy")) Then
Shell "D:\Orders\Complete.bat"
End If
End Sub