如何让多个"脚本"可用于运行多个规则?唯一可与规则一起运行/运行脚本的代码是粘贴在ThisOutlookSession中的代码。下面的模块不会出现。
我有Windows 11上的Outlook 2010。
我是公司的应付账款
我的所有发票都在我的电子邮件中。
我有很多供应商。我想创建规则,将特定供应商的附件保存到正确的文件夹中。将joeshmo电子邮件中的附件保存到"我的文档"中的joeshmo文件夹中。
我有几个工作代码:
- 在我选择电子邮件的地方,运行宏,所有附件都保存到同一个文件夹中
- 我可以在规则中使用
我为我的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