You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Outlook导出任务到Excel的VBA代码时报同步文件夹冲突错误

报错原因

"One or more items in the folder you synchronized do not match. To resolve the conflicts, open the items, and then try this operation again."
上述报错的核心原因是Outlook默认待办文件夹中存在同步冲突项:当你在多端修改同个任务、或是Outlook与邮件服务器同步中断时,会生成特殊的冲突副本项,这类项不属于常规任务类型,遍历读取属性时会触发同步校验报错,你之前代码可正常运行是因为当时文件夹内没有冲突项。

解决方案

方案1:手动清理冲突(永久解决)

  • 打开Outlook,切换到待办事项视图
  • 查找带有冲突标识的任务项,打开后选择保留需要的版本,删除冲突副本
  • 重启Outlook后运行原代码即可正常执行

方案2:修改代码兼容异常项(无需清理可直接运行)

在原代码中增加错误捕获逻辑,自动跳过无法读取的冲突项,修改后的完整代码如下:

'创建导出子程序
Sub Export_TaskItems()
Dim NS As NameSpace
Dim TaskFolder As Folder
Dim Item As Object
Dim TaskItem As TaskItem

Dim xlApp As Excel.Application
Dim xlwb As Excel.Workbook
Dim xlws As Excel.Worksheet
Dim iRow As Long

Set xlApp = CreateObject("Excel.Application")
Set xlwb = xlApp.Workbooks.Add
Set xlws = xlwb.Worksheets(1)

Set NS = Session
Set TaskFolder = NS.GetDefaultFolder(olFolderToDo)

'写入Excel表头
xlws.Range("A1").Resize(1, 6).Value = Array("状态", "开始日期", "截止日期", "任务名称", "优先级", "分类")
iRow = 2

'遍历任务,增加错误捕获跳过冲突项
On Error Resume Next
For Each Item In TaskFolder.Items
    If Err.Number = 0 Then
        If Item.Class = olTask Then
            Set TaskItem = Item
            
            xlws.Cells(iRow, 1).Value = Convert_Status(TaskItem.Status)
            xlws.Cells(iRow, 2).Value = TaskItem.StartDate
            xlws.Cells(iRow, 3).Value = TaskItem.DueDate
            xlws.Cells(iRow, 4).Value = TaskItem.Subject
            xlws.Cells(iRow, 5).Value = Convert_Importance(TaskItem.Importance)
            xlws.Cells(iRow, 6).Value = TaskItem.Categories
            
            iRow = iRow + 1
        End If
    Else
        Err.Clear
    End If
Next Item
On Error GoTo 0

xlApp.Visible = True

Set xlApp = Nothing
End Sub

'状态值转文本函数
Public Function Convert_Status(ByVal Status_Value As Integer) As String
On Error Resume Next
Convert_Status = Array("未开始", "进行中", "已完成", "待回应", "已延期")(Status_Value)
End Function

'优先级值转文本函数
Public Function Convert_Importance(ByVal Importance_Value As Integer) As String
On Error Resume Next
Convert_Importance = Array("低", "普通", "高")(Importance_Value)
End Function

内容的提问来源于stack exchange,提问作者H Lakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:42:03