我一直在使用我在堆栈溢出中发现的例程来自动在默认任务文件夹中创建Outlook中的任务项。我试图修改它以在任务名为“新FTE”和“新顾问”的两个子文件夹之一中创建任务。在任务文件夹的子文件夹中创建Outlook任务项时出错
运行此代码会导致来自错误处理程序的此消息。
错误号:-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 FTE首先必须在默认的Tasks文件夹下直接创建。 – niton
请放下'On Error GoTo Error_Handler'。这使得在开发过程中知道哪条线路发生错误非常困难。 –
感谢您的评论Niton。这些文件夹存在。我已经在任务下手动创建了它们。 – crustybread