【问题标题】:Outlook VBA: Move new (unsaved) item to folderOutlook VBA:将新(未保存)项目移动到文件夹
【发布时间】:2021-07-13 10:39:10
【问题描述】:

我试图在用户保存新的 Outlook 项目时在特定商店中创建它。通常,如果有多个帐户,当您创建一个新项目(例如按 Ctrl+Shift+K 执行任务)时,新项目会在活动帐户的默认文件夹中创建。

我尝试拦截新项目的检查器并移动它,但没有任何效果。这是代码的要点(省略了检查以避免非新项目):

Dim WithEvents inspectors As Outlook.inspectors

Private Sub Application_Startup()
    Set inspectors = Application.inspectors
End Sub

Private Sub inspectors_NewInspector(ByVal Inspector As Inspector)
    Dim item As Object
    Set item = Inspector.CurrentItem
    If item Is Nothing Then Exit Sub
    If item.Class <> olTask Then Exit Sub
    item.Move Application.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks)
End Sub

很遗憾,Move 方法无效。有什么想法吗?

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    您不能移动未保存的项目。你是如何创建项目的?

    使用Items.Add 方法在特定文件夹中添加项目(即创建项目)。如果您使用 CreateItem 方法,它将始终在该项目类型的默认文件夹中创建。

    与其尝试使用现有功能来尝试创建任务(我不确定这是否可能或容易),我认为您最好创建一个在您想要的文件夹中创建任务的宏,然后添加宏到工具栏按钮。或者您可以先尝试保存该项目,然后再移动它。请注意,您当前的代码会将项目移动到默认的 Tasks 文件夹。

    【讨论】:

    • 我的目标是使用在 Outlook 中创建任务的标准方法:主页 > 新项目 > 任务或 Ctrl+Shift+K。 Folders.Add 创建一个新文件夹;我想在用户填写数据并点击保存后在特定文件夹中创建一个新的任务项。
    • 我的意思是 Items.Add,将修改答案。
    • 您创建宏的建议似乎是可以做到的最好的。我最初是这样做的,但我也希望能够使用默认的任务创建机制。不幸的是,这似乎不可能。我无法关闭初始任务项或通过 NewInspector 方法创建新任务项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多