|
楼主 |
发表于 2013-10-22 08:27
|
显示全部楼层
dsd999 发表于 2013-10-18 14:11
DSD999版主您好
我尽量修改了代码了,但是还是有一些小问题没有解决,非常希望您能再指导下,非常感谢!
您的教程我觉得非常好,都实现了既定的功能,属于完善的软件,但是我个人提一点小小建议,就是这样完整的程序不太适合新手学习,我个人认为还是按EXCEL帮助那样,功能模块最小化,这样最容易记忆和理解,至于后期的排列组合无穷变化,就让学生自己完善啦 ^^ 就像以前我们读书学数学,先学基本概念,再学习高考题.直接上高考题,基本概念隐藏其中就不容易分离出来了.
搜索这个OL VBA中文资源还是很少的~希望您能在百忙中再抽时间教学下俺, OL VBA不像EXCEL VBA随便找到资源超级速成, 您5分钟写的代码或许我5天都很找不到呢~!
Option Explicit '<--保留这个更好!
Sub MarcoInExcel() '【备注:假设已安装OUTLOOK且该宏在EXCEL里使用】
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
If olApp Is Nothing Then MsgBox "Outlook.Application FAIL": Exit Sub
'需要dim下面两个变量为什么数据类型呢?
Set myNamespace = olApp.GetNamespace("MAPI") '诡异无法创建ActiveX控件 这个以前是可以的哦
Set myFolder = myNamespace.GetDefaultFolder(6) '求教: 1.mynamespace是什么意思呢 2.(6)是简写吧 请问其英文是什么呢
Dim objItem As Object
Dim i&, j&
i = 2
For Each objItem In myFolder.items
If InStr(1, objItem.Body, "正文字符串") > 0 Then
If InStr(1, Item.Subject, "标题字符串") > 0 Then
If Item.ReceivedTime > "2013-05-10" Then '<-请问我这样写日期格式是否正确? 是否需使用日期比较f函数?
If InStr(1, Item.SenderName, "XXX@163.com") > 0 Then '<-请问收件人是ReceiverName ?
If Item.UnRead = True Then
If Item.Attachments.Count <> 0 Then
For j = 0 To Item.Attachments.Count - 1 '请问是否0是第一份 还是1是第一份?
If InStr(1, Item.Attachments(0).Filename, "附件名字符串") > 0 Then '<--需要遍历每个附件
Sheet1.Cells(i, 1) = objItem.SenderName
Sheet1.Cells(i, 2) = objItem.ReceiverName '收件人的邮箱名 <--想象的代码 需请您更正
Sheet1.Cells(i, 3) = objItem.CCName '抄送的邮箱名 <--想象的代码 需请您更正
Sheet1.Cells(i, 4) = objItem.BccName '密送的邮箱名 <--想象的代码 需请您更正
Sheet1.Cells(i, 5) = objItem.Subject
Sheet1.Cells(i, 6) = objItem.Body
Sheet1.Cells(i, 7) = objItem.ReceivedTime
Sheet1.Cells(i, 8) = objItem.SendededTime '发送时间 <--想象的代码 需请您更正
'【另存附件到指定文件夹例如"D:\ABC"】
'【重要】如何实现在原邮件上回复的功能?
i = i + 1
End If
Next j
End If
End If
End If
End If
End If
End If
Next
MsgBox "已完成"
End Sub |
|