Outlook VBA未运行

Outlook VBA未运行,vba,date,email,outlook,sendmail,Vba,Date,Email,Outlook,Sendmail,我不是VBA专家,但一位朋友编写了一个宏,在从列表(MoveList)向某人发送电子邮件时,它会自动将电子邮件从“已发送邮件”移动到另一个文件夹 直到今天,这一切都很好——我已经检查了outlook中的宏设置(改为运行所有宏),但仍然不起作用 有什么想法吗?(我努力粘贴宏,它一直在抱怨格式问题,所以我把它上传到这里) 选项显式 作为对象的Dim objXL 作为对象的Dim objWB 作为对象的Dim objWS 作为对象的Dim对象范围 私有函数InList(ByVal ToList作为字符

我不是VBA专家,但一位朋友编写了一个宏,在从列表(MoveList)向某人发送电子邮件时,它会自动将电子邮件从“已发送邮件”移动到另一个文件夹

直到今天,这一切都很好——我已经检查了outlook中的宏设置(改为运行所有宏),但仍然不起作用

有什么想法吗?(我努力粘贴宏,它一直在抱怨格式问题,所以我把它上传到这里)

选项显式
作为对象的Dim objXL
作为对象的Dim objWB
作为对象的Dim objWS
作为对象的Dim对象范围
私有函数InList(ByVal ToList作为字符串,ByVal DistList作为Outlook.DistListItem)作为布尔值
###################################################
##此函数用于检查“收件人”列表是否包含#
##提供的分发中的任何名称#
##使用字符串比较#
###################################################
作为整数的Dim i
作为字符串的Dim测试
InList=False
对于i=1 To DistList.MemberCount#检查每个名称是否都在To列表中
test=DistList.GetMember(i).Name
如果仪表(1,ToList,test),则
InList=True#如果名称在to列表中,则将函数设置为True
如果结束
接下来我
端函数
私有函数TwoMonths()作为字符串
###################################################
##此函数返回2个月前的日期#
##今天。这不会返回时间元素#
##                                                #
###################################################
今天暗淡如弦
作为整数的暗淡日
将月份设置为整数
将年份设置为整数
今天=现在#现在以dd/mm/yyyy hh:mm:ss格式返回今天的日期
天=左(今天,2)
月份=月中(今天,4,2)
年=年中(今天,7,4)
如果月份小于2,则检查2个月前是否在上一年,并对此进行更正
年份=年份-1
月份=10+个月
其他的
月=月-2
如果结束
两个月=日&“/”月&“/”年
端函数
Sub-MoveEmails()#(ByVal MoveFrom作为字符串,ByVal MoveTo作为字符串,Distributionlist作为字符串)
####################################################
##此子例程将移动发送的任何邮件#
##通讯组列表中的任何人移动列表#
##已发送文件夹中的最近2个月#
####################################################
将默认收件箱设置为Outlook.Folder
将FoldDefaultSentitems设置为Outlook.Folder
将FoldDestFolder设置为Outlook.Folder
将默认联系人设置为Outlook.Folder
将dlContactList设置为Outlook.DistListItem
将TopFolder设置为Outlook.Folder
将邮件设置为Outlook.Items
将myItem设置为对象
我想我会坚持多久
作为整数的Dim计数器
作为字符串的Dim filterCriteria
作为Outlook.Items的Dim FilteredItemCollection
以字符串形式显示最后2个月
暗淡的图像
Dim mynamespace
设置mynamespace=Application.GetNamespace(“MAPI”)
设置DefaultInbox=mynamespace.Folders(“我的email@email.com“”#更改您的主收件箱名称
设置DefaultContacts=mynamespace.GetDefaultFolder(olFolderContacts)
设置FoldDefaultSentitems=DefaultInbox。文件夹(“已发送邮件”)#选择要从中移动的“已发送邮件”文件夹
设置TopFolder=mynamespace.Folders(“Misc”)#更改第二个收件箱名称
Set folDestFolder=TopFolder.Folders(“已发送(其他)”)#设置目标文件夹
Set-dlContactList=DefaultContacts.Items(“MoveList”)#选择要用于检查的通讯组列表
设置itSentEmails=FoldDefaultSentitems.Items#选择“已发送项目”中的所有项目
#下一节将搜索限制为仅搜索过去2个月内发送的项目
#这是为了限制检查的电子邮件数量。假定
#此宏以少于2个月的频率运行
最后2个月=两个月
filterCriteria=“[ReceivedTime]>”&最近两个月和12:00 AM“”
设置filteredItemsCollection=itSentEmails.Restrict(filterCriteria)
#循环直到检查完所有电子邮件
i=1

而我在2月份,月份在TwoMonths函数中计算为零

添加以下内容:

If month = 0 Then
    month = 12
    year = year - 1
End If

欢迎来到StackOverflow!脚本是否显示任何错误?是否可能区域设置(例如日期格式)已更改?哈希不是VBA中的注释指示符,因此无法编译。这让我有点困惑。Outlook中有一个名为
ThisOutlookSession
的模块。里面有什么?我假设您使用了
ItemSend
事件来触发所有其他代码,但发生了一些事情。@Lyth没有更改任何设置,所有内容仍然是相同的格式(dd/MM/yyyy和h:MM:ss)tt@DickKusleika我只有“Micosoft Outlook对象”和“ThisOutlookSession”其中包含宏,这不是它应该是什么样子吗?即使我手动运行宏,它也不会移动电子邮件,我如何检查ItemSend是否损坏?宏中已经有一条注释:如果月份<2,则“检查2个月前是否在前一年,并更正今年=年-1个月=10+个月,谢谢e help,如果我通过VBA编辑器运行它,它将运行,但在Outlook中,如果按Send键时,您应该在此Outlook会话中具有调用MoveEmails的ItemSend代码,它仍然不起作用。请在ItemSend中的MoveEmails处设置断点,然后查看是否到达该行。
If month = 0 Then
    month = 12
    year = year - 1
End If