【发布时间】:2017-01-12 20:20:51
【问题描述】:
我一直在使用我在 Stack Overflow 上发现的例程在 Outlook 的默认任务文件夹中自动创建一个任务项。我试图修改它以在名为“新 FTE”和“新顾问”的两个任务子文件夹之一中创建任务。
运行此代码会导致来自错误处理程序的此消息。
错误号:-2147221233
错误来源:AddOlkTask
错误描述:尝试的操作失败。找不到对象。
问题代码显示在“开始新代码”和“结束新代码”之间。我已经尝试了此代码的许多变体,但我无法破解它(不是双关语)。
Sub AddOlTask(sSubject, sBody, dtDueDate, dtReminderDate, name, program)
On Error GoTo Error_Handler
Dim noDue, pFolder, reminderSetFlag As String
reminderSetFlag = False
If program <> "Career Path Curriculum" Then
dtDue = dtDueDate
dtReminder = dtReminderDate
reminderSetFlag = True
End If
If program = "Active Consultant" Then
pFolder = "New Consultants"
Else
pFolder = "New FTEs"
End If
Const olTaskItem = 3
Dim olApp As Object
Dim OlTask As Object
Set olApp = CreateObject("Outlook.Application")
Set OlTask = olApp.CreateItem(olTaskItem)
With OlTask
.Subject = name & ": " & sSubject
.Status = 1 '0=not started, 1=in progress, 2=complete, 3=waiting,
'4=deferred
.Importance = 1 '0=low, 1=normal, 2=high
.dueDate = dtDue
.ReminderSet = reminderSetFlag
.ReminderTime = dtReminder
.Categories = "Mandatory SkillSoft Training" 'use any of the predefined Categorys or create your own
.body = sBody
.Display
.Save
End With
'start new code
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim tsk As Outlook.TaskItem
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderTasks)
Set olFolder = olFolder.Folders(pFolder) 'error raised on this line
'end new code
Error_Handler_Exit:
On Error Resume Next
Set OlTask = Nothing
Set olApp = Nothing
Exit Sub
Error_Handler:
MsgBox "The following error has occured" & vbCrLf & vbCrLf & "Error Number: " & _
Err.Number & vbCrLf & "Error Source: AddOlkTask" & vbCrLf & "Error Description: " & _
Err.Description, vbCritical, "An Error has Occurred!"
Resume Error_Handler_Exit
End Sub
【问题讨论】:
-
“找不到对象。”文件夹 New Consultants 或 New FTEs 首先必须直接在默认 Tasks 文件夹下创建。
-
请删除
On Error GoTo Error_Handler。这使得在开发过程中很难知道哪一行出现了错误。 -
感谢您的评论 Niton。文件夹存在。我在 Tasks 下手动创建了它们。