outlook exchange server有大小限制,我想用一个VBA实现规则的功能。
时间:2011-02-27
来源:互联网
利用outlook2003 vba 移动收到的邮件或会议通知到不同的指定文件夹
内,具体功能要求如下:在硬盘某分区建立一个Excel表 文件,第一列表头“发件人邮件地址”;第二列表头“发件人姓名”;第三列“文件夹名称”
当收到邮件、会议通知时触发VBA程序,如果发件人包含先前设置好的excel表内第一列或第二列某单元给的值,则将邮件自动移动到以该单元格右边单元格的值为名的outlook文件夹内。 请高手帮忙!
内,具体功能要求如下:在硬盘某分区建立一个Excel表 文件,第一列表头“发件人邮件地址”;第二列表头“发件人姓名”;第三列“文件夹名称”
当收到邮件、会议通知时触发VBA程序,如果发件人包含先前设置好的excel表内第一列或第二列某单元给的值,则将邮件自动移动到以该单元格右边单元格的值为名的outlook文件夹内。 请高手帮忙!
作者: safty_xu 发布时间: 2011-02-27
最好用EXCEL记录实现。
如果EXCEL结合实现不了,我想借用ACCESS+ADODB+SQL实现。但是以下代码中估计问题出在SQL语句,请帮忙指点。SQL语句可能无法应用senderemailaddress 及sendername,请高手指点!
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
' (1) default Inbox
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal item As Object)
On Error GoTo ErrorHandler
' (2) only act if it's a MailItem
Dim Msg As Outlook.MailItem
Dim fldr As Outlook.MAPIFolder
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim mydata As String
Dim SQL As String
Dim s As String
If TypeName(item) = "MailItem" Then
Set Msg = item
x = Msg.SenderEmailAddress
mydata = "D:\outlook规则.mdb"
Set cnn = New ADODB.Connection '建立与数据库的连接
With cnn
.Provider = "microsoft.jet.oledb.4.0"
.Open mydata
End With
SQL = "select * from rule where 邮箱 LIKE '%" & Msg.SenderEmailAddress & "%' or 姓名 LIKE '%" & Msg.SenderName & "%'"
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount <> 0 Then
rs.movefirst
Set fldr = Outlook.Session.GetDefaultFolder(olFolderInbox).Folders(rs.Fields("归类文件夹"))
Msg.Move fldr
rs.Close
Set rs = Nothing
Set cnn = Nothing
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
outlook规则.rar(7.75 KB)
如果EXCEL结合实现不了,我想借用ACCESS+ADODB+SQL实现。但是以下代码中估计问题出在SQL语句,请帮忙指点。SQL语句可能无法应用senderemailaddress 及sendername,请高手指点!
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
' (1) default Inbox
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal item As Object)
On Error GoTo ErrorHandler
' (2) only act if it's a MailItem
Dim Msg As Outlook.MailItem
Dim fldr As Outlook.MAPIFolder
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim mydata As String
Dim SQL As String
Dim s As String
If TypeName(item) = "MailItem" Then
Set Msg = item
x = Msg.SenderEmailAddress
mydata = "D:\outlook规则.mdb"
Set cnn = New ADODB.Connection '建立与数据库的连接
With cnn
.Provider = "microsoft.jet.oledb.4.0"
.Open mydata
End With
SQL = "select * from rule where 邮箱 LIKE '%" & Msg.SenderEmailAddress & "%' or 姓名 LIKE '%" & Msg.SenderName & "%'"
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount <> 0 Then
rs.movefirst
Set fldr = Outlook.Session.GetDefaultFolder(olFolderInbox).Folders(rs.Fields("归类文件夹"))
Msg.Move fldr
rs.Close
Set rs = Nothing
Set cnn = Nothing
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
附件

2011-2-27 21:58, 下载次数: 0
作者: safty_xu 发布时间: 2011-02-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28