如何让多个"脚本"可用于运行多个规则?



如何让多个"脚本"可用于运行多个规则?唯一可与规则一起运行/运行脚本的代码是粘贴在ThisOutlookSession中的代码。下面的模块不会出现。

我有Windows 11上的Outlook 2010。
我是公司的应付账款
我的所有发票都在我的电子邮件中。

我有很多供应商。我想创建规则,将特定供应商的附件保存到正确的文件夹中。将joeshmo电子邮件中的附件保存到"我的文档"中的joeshmo文件夹中。

我有几个工作代码:

  1. 在我选择电子邮件的地方,运行宏,所有附件都保存到同一个文件夹中
  2. 我可以在规则中使用

我为我的Outlook版本重新启用了脚本。

我去规则,我设置条件,选择";运行脚本";在下拉列表中,只有一个代码可用,那就是粘贴到"中的任何代码;ThisOutlookSession">
当我打开VBA编辑器时,会有一个模块列表,但在运行脚本中没有显示任何模块。我也不能把它们搬上去。我只能粘贴一个代码。

我想为每个供应商创建一个规则和附带脚本,以便自动运行。因此,所有收到的带有发票的电子邮件都会自动保存到他们的文件夹中。

我是不是要求太多了?我可以将所有附件保存到同一文件夹中,然后进行排序。
或者,我可以创建规则,为每个供应商的电子邮件分配类别,然后按字母顺序进行排序。意思是,我可以选择所有的";A";供应商,运行宏,选择";B";供应商等

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat
dateFormat = Format(Now, "yyyy-mm-dd H-mm")
saveFolder = "C:UsersjennyDocumentsAttachmentsoutlook testingtest number one"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & dateFormat & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub

"运行脚本"期望传入项作为输入。

代码必须以类似Sub somename(itm As Object)的内容开头。

您可以为每个供应商创建代码。

Public Sub saveAttachtoDisk_Sender1(itm As Object)
' Rule conditions: from Sender1 with attachment

Dim objAtt As Attachment
Dim saveFolder As String
Dim dateFormat As String

dateFormat = Format(Now, "yyyy-mm-dd H-mm")

saveFolder = "C:UsersjennyDocumentsAttachmentsoutlook testingtest number one"

For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & dateFormat & objAtt.DisplayName
Next

End Sub
Public Sub saveAttachtoDisk_Sender2(itm As Object)
' Rule conditions: from Sender2 with attachment

Dim objAtt As Attachment
Dim saveFolder As String
Dim dateFormat As String

dateFormat = Format(Now, "yyyy-mm-dd H-mm")

saveFolder = "C:UsersjennyDocumentsAttachmentsoutlook testingtest number two"

For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & dateFormat & objAtt.DisplayName
Next

End Sub

一条规则可能更可取:

Public Sub saveAttachtoDisk_VariousSenders(itm As Object)
' Rule condition: with attachment

Dim objAtt As Attachment
Dim saveFolder As String
Dim dateFormat As String

dateFormat = Format(Now, "yyyy-mm-dd H-mm")

Debug.Print itm.senderEmailAddress
Select Case itm.senderEmailAddress

Case "sender1@someplace.com"
saveFolder = "C:UsersjennyDocumentsAttachmentsoutlook testingtest number one"

Case "sender2@someplace.com"
saveFolder = "C:UsersjennyDocumentsAttachmentsoutlook testingtest number two"

Case Else
Debug.Print itm.senderEmailAddress & " not listed."

End Select

Debug.Print saveFolder
If saveFolder <> "" Then
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & dateFormat & objAtt.DisplayName
Next
End If

End Sub

相关内容

  • 没有找到相关文章

最新更新