'User-defined type not defined' Error



I just got a new computer at work and a piece of code that has always worked
is now giving me the 'User-defined type not defined' error. I think it is
because I am am missing a reference library, but I don't know which one. The
point it errors is between the => <=

On Error GoTo Add_Err
'Save record first to be sure required fields are filled.
DoCmd.RunCommand acCmdSaveRecord
'Exit the procedure if appointment has been added to Outlook.
If Me!AddedToOutlook = True Then
MsgBox "This appointment is already added to Microsoft Outlook"
Exit Sub
'Add a new appointment.
=> Dim objOutlook As Outlook.Application <=
Dim objAppt As Outlook.AppointmentItem
Dim objRecurPattern As Outlook.RecurrencePattern
Set objOutlook = CreateObject("Outlook.Application")
Set objAppt = objOutlook.CreateItem(olAppointmentItem)
With objAppt
.Start = Date + 1 & " " & Time()
.Duration = Me!ApptLength
.Subject = Me!Appt
If Not IsNull(Me!ApptNotes) Then .Body = Me!ApptNotes
If Not IsNull(Me!ApptLocation) Then .Location = Me!ApptLocation
If Me!ApptReminder Then
.ReminderMinutesBeforeStart = Me!ReminderMinutes
.ReminderSet = True
End If
Set objRecurPattern = .GetRecurrencePattern

With objRecurPattern
.RecurrenceType = olRecursWeekly
.Interval = 1
'Once per week
'You can hard-wire in these dates or get the
'information from text boxes, as used here.
'.PatternStartDate = #12/1/2003#
.PatternStartDate = Me!ApptStartDate
'.PatternEndDate = #12/30/2003#
.PatternEndDate = Me!ApptEndDate
End With
.Close (olSave)
End With
'Release the AppointmentItem object variable.
Set objAppt = Nothing
End If
'Release the object variables.
Set objOutlook = Nothing
'...Set objRecurPattern = Nothing
'Set the AddedToOutlook flag, save the record, display
'a message.
'Me!AddedToOutlook = True
DoCmd.RunCommand acCmdSaveRecord
MsgBox "Ok, I have just scheduled a meeting between you and Mr. Mark
Johnson, President of Wyndham Consumer Finance. You can explain to him why
you cannot follow a simple direction.", vbOKOnly, "You're so hosed..."
Exit Sub
MsgBox "Error " & Err.Number & vbCrLf & Err.Description
Exit Sub
End Sub


Thanks in advance!

Douglas J. Steele

Presumably the Outlook library. Look for Microsoft Outlook n.0 Object
Library, where n should be 8 for Outlook 97, 9 for Outlook 2000, 10 for
Outlook 2002, 11 for Outlook 2003 and 12 for Outlook 2007.

Another alternative is to use Late Binding, which means you don't have to
set a reference.


Dim objOutlook As Outlook.Application
Dim objAppt As Outlook.AppointmentItem
Dim objRecurPattern As Outlook.RecurrencePattern


Dim objOutlook As Object
Dim objAppt As Object
Dim objRecurPattern As Object

and define all of the intrinsic Outlook constants you're using:

Const olAppointmentItem As Long = 1
Const olRecursWeekly As Long = 1
Const olSave As Long = 0


It as the Outlook 11 Object Library.

Thanks for the other method too. Can't have too many...

Douglas J. Steele

If you're going to be pushing your application out to multiple users, and
you can't be sure of which version of Outlook they'll have installed, you
definitely should use Late Binding.

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question