Позвольте мне предварить это словами: не знаю, как работают правила для нескольких учетных записей.Возможно, вам придется создать правило для ОБА учетных записей, но они могут ссылаться на один и тот же сценарий.
Я обновил ваш код, чтобы он стал общедоступным Sub
против Private Sub
, и поместил его в модуль, чтобына него может ссылаться механизм правил.
![enter image description here](https://i.stack.imgur.com/VnYlM.png)
Теперь, когда у нас есть код (скрипты, запускаемые механизмом правил, обычно по своей сути передают электронную почту).как MailItem для подпрограммы, и ByVal вызывал проблемы с распознаванием сценария как запускаемого из MailItem, поэтому я обновил его до Item as MailItem
).
Затем мы создадим новое правило, используя механизм правил.Если вы видите этот упрощенный интерфейс, нажмите на Дополнительные параметры.Это позволит нам применять правила ко всем электронным письмам.В окне дополнительных параметров не устанавливайте флажок для Which conditions do you want to check?
, просто нажмите кнопку Далее.Он подтвердит, что вы хотите добавить это правило для ВСЕХ ЭЛЕКТРОННЫХ ПОЧТ, которые мы делаем.
![enter image description here](https://i.stack.imgur.com/CvaR9.png)
![enter image description here](https://i.stack.imgur.com/Vi3vY.png)
После выбора run a script
мы можем нажать a script
, чтобы указать, какой скрипт мы хотим запустить.Я установил его в сценарий exportToExcel в модуле (проект) 1
![enter image description here](https://i.stack.imgur.com/E9mkS.png)
Нажмите Готово и протестируйте его.
Sub exportToExcel(item As MailItem)
Dim objMail As Outlook.MailItem
Dim strExcelFile As String
Dim objExcelApp As Excel.Application
Dim objExcelWorkBook As Excel.Workbook
Dim objExcelWorkSheet As Excel.Worksheet
Dim nNextEmptyRow As Integer
Dim strColumnB As String
Dim strColumnC As String
Dim strColumnD As String
Dim strColumnE As String
If item.Class = olMail Then
Set objMail = item
End If
'Specify the Excel file which you want to auto export the email list
'You can change it as per your case
strExcelFile = "C:\Users\karol\Documents\test.xlsx"
'Get Access to the Excel file
On Error Resume Next
Set objExcelApp = GetObject(, "Excel.Application")
If Error <> 0 Then
Set objExcelApp = CreateObject("Excel.Application")
End If
Set objExcelWorkBook = objExcelApp.Workbooks.Open(strExcelFile)
Set objExcelWorkSheet = objExcelWorkBook.Sheets("Arkusz1")
'Get the next empty row in the Excel worksheet
nNextEmptyRow = objExcelWorkSheet.Range("B" & objExcelWorkSheet.Rows.count).End(xlUp).Row + 1
'Specify the corresponding values in the different columns
strColumnB = objMail.SenderName
strColumnC = objMail.SenderEmailAddress
strColumnD = objMail.Subject
strColumnE = objMail.ReceivedTime
strColumnF = objMail.Body
strColumnG = objMail.To
'Add the vaules into the columns
objExcelWorkSheet.Range("A" & nNextEmptyRow) = nNextEmptyRow - 1
objExcelWorkSheet.Range("B" & nNextEmptyRow) = strColumnB
objExcelWorkSheet.Range("C" & nNextEmptyRow) = strColumnC
objExcelWorkSheet.Range("D" & nNextEmptyRow) = strColumnD
objExcelWorkSheet.Range("E" & nNextEmptyRow) = strColumnE
objExcelWorkSheet.Range("F" & nNextEmptyRow) = strColumnF
objExcelWorkSheet.Range("G" & nNextEmptyRow) = strColumnG
'Fit the columns from A to E
objExcelWorkSheet.Columns("A:G").AutoFit
'Save the changes and close the Excel file
objExcelWorkBook.Close SaveChanges:=True
End Sub