gpt4 book ai didi

vba - 如何在 Outlook Application_Startup 事件处理程序和所有文件夹同步后执行 VBA?

转载 作者:行者123 更新时间:2023-12-01 06:25:20 25 4
gpt4 key购买 nike

我正在尝试运行一个宏,在 Outlooks 启动时将今天之前收到的电子邮件移动到一个文件柜文件夹。问题在于Application_Startup事件处理程序在 Outlook 完全加载和文件夹同步之前发生。因此,当我早上打开 Outlook 时,昨晚收到的所有电子邮件都没有移到柜子里。

为了解决这个问题,我创建了一个自定义类来实例化 Outlook.syncObject它同步所有文件夹并在同步完成时提供事件处理程序。我在 Application_Startup 中从这个类创建了一个对象事件处理程序。但是,此同步似乎实际上并未检索任何电子邮件,而且似乎在 Outlook 加载之前就已完成。

Outlook 完成后似乎可以执行代码 全部 它的启动过程中的一部分将是一个常见的功能请求。谢谢你的帮助。

此示例代码仅显示收件箱中有多少未读电子邮件。如果我关闭 Outlook,给自己发送一封电子邮件,然后打开 Outlook,我需要加载 Outlook 并在生成包含收件箱中未读电子邮件数量的消息框之前进行完全同步。

欧洛克 Application_Startup事件处理程序:

Dim mySyncInstance As New mySync

Private Sub Application_Startup()
mySyncInstance.Initialize_handler
End Sub

自定义 mySync 类代码:
Dim WithEvents mySync As Outlook.syncObject

Sub Initialize_handler()
Set mySync = Application.Session.SyncObjects.item(1)
mySync.Start
End Sub

Private Sub mySync_SyncEnd()
MsgBox Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).items.Restrict("[UnRead] = True").Count & _
" Emails are unread in the main inbox."
End Sub

最佳答案

I'm trying to run a macro that moves emails received before today to a cabinet folder whenever Outlooks starts.



您可以考虑处理 NewMailEx Application 类的事件,当收件箱中收到新项目时会触发该事件。因此,您可以获取邮件项目并决定是否需要将其移动到子文件夹中。对于 Microsoft Outlook 处理的每个接收到的项目,此事件都会触发一次。该项目可以是几种不同的项目类型之一,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含对应于该项目的条目 ID。

您也可以创建规则并分配 VBA 宏子。邮件项目对象的传入实例将作为参数传递。例如:
public sub test(mail as MailItem)
' do whatever you need
end sub

作为替代方法,您可以处理 ItemAdd Items 类的事件,当一个或多个项目添加到指定集合时会触发该事件。一次将大量项目(超过 16 个)添加到文件夹时,不会运行此事件。

关于vba - 如何在 Outlook Application_Startup 事件处理程序和所有文件夹同步后执行 VBA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com