Solved

VBA Code using Outlook and Redemption to send meetings, new a pointer

Posted on 2004-09-29
10
378 Views
Last Modified: 2008-02-01
The following is the code I'm using to create calendar appointments and meetings.
This is working with the local calendar, but the inventation for a meeting only makes it to the sent items folder, it never actually gets mailed out.  I can open outlook and forward the items in the sent items folder to the addressees and they go out just fine.  
Does any one have any pointers?

Public Function CreateAppointment(strSubject As String, strBody As String, dtStartTime As Date, dtEndTime As Date, bolAllDay As Boolean, Optional strAttendees As String)
On Error GoTo Errexit
Dim OlApp As New Outlook.Application, Appt As Object, safeAppt As Object
Set OlApp = CreateObject("Outlook.Application")
Set Appt = OlApp.Session.GetDefaultFolder(olFolderCalendar).Items
Set safeAppt = CreateObject("Redemption.SafeAppointmentItem")
Set Appt = OlApp.CreateItem(olAppointmentItem)
safeAppt.Item = Appt
With safeAppt
    .Subject = strSubject
    .Start = dtStartTime
    .End = dtEndTime
    .AllDayEvent = bolAllDay
    .Body = strBody
    If Len(strAttendees) > 0 Then
        .RequiredAttendees = strAttendees
        .MeetingStatus = olMeeting
    End If
    .Importance = olImportanceHigh
    .ReminderSet = True
    .ReminderMinutesBeforeStart = 30
    If Len(strAttendees) > 0 Then
        .Send
    Else
        .Save
    End If
End With
     Set Appt = Nothing
     Set safeAppt = Nothing
     Set OlApp = Nothing
Errexit:
    If Err <> 0 Then
        Debug.Print Err, Err.Description
        Stop
    End If
End Function
0
Comment
Question by:ajaac
  • 6
  • 4
10 Comments
 
LVL 15

Expert Comment

by:will_scarlet7
ID: 12180411
What bout creating and filling in your appointment item in the standard Outlook Appointment item then passing it to the SafeAppointmentItem to send. Like so:
'********************************
Public Function CreateAppointment(strSubject As String, strBody As String, dtStartTime As Date, dtEndTime As Date, bolAllDay As Boolean, Optional strAttendees As String)
On Error GoTo Errexit
Dim OlApp As New Outlook.Application, Appt As Object, safeAppt As Object
Set OlApp = CreateObject("Outlook.Application")
Set Appt = OlApp.Session.GetDefaultFolder(olFolderCalendar).Items
Set safeAppt = CreateObject("Redemption.SafeAppointmentItem")
Set Appt = OlApp.CreateItem(olAppointmentItem)
With Appt
    .Subject = strSubject
    .Start = dtStartTime
    .End = dtEndTime
    .AllDayEvent = bolAllDay
    .Body = strBody
    If Len(strAttendees) > 0 Then
        .RequiredAttendees = strAttendees
        .MeetingStatus = olMeeting
    End If
    .Importance = olImportanceHigh
    .ReminderSet = True
    .ReminderMinutesBeforeStart = 30
    .Save
End With

If Len(strAttendees) > 0 Then
    safeAppt.Item = Appt
    safeAppt.Item.Send
Else

     Set Appt = Nothing
     Set safeAppt = Nothing
     Set OlApp = Nothing

Errexit:
    If Err <> 0 Then
        Debug.Print Err, Err.Description
        Stop
    End If
End Function
'********************************

I'm not sure if it will fix teh problem, but it is wort a shot. (I've never had a time when a redemption item went to the sent items folder without actually sending)
Just so you know with most Outlook item properties you will not hit the security walls when writing to them, and I personally find them friendlier to work wit then the SafeItem properties, which I just use for sending.

God bless!
Sam
0
 

Author Comment

by:ajaac
ID: 12182990
I have tried using the send and receive button and nothing happens, I think Outlook thinks this has already been sent.  

This is part of an application that will be adding calendar items and meeting without user involvement, so I need it to work without the pop-ups.

I've tried this in an exchange environment and have the same problems.

I've seen several posts indicating the redemption is the way to go, so I must be doing something wrong, I just don't see the problem.
0
 
LVL 15

Expert Comment

by:will_scarlet7
ID: 12183160
What version of Outlook are you using?
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 

Author Comment

by:ajaac
ID: 12183303
Outlook version is 2003 sr1
Access version is 2003 sr1, but I've also tried 2000 sr3
0
 

Author Comment

by:ajaac
ID: 12183415
scarlet7,

I tried your code, it brings up a security pop-up.
When you schedule the appt as a meeting it automatically sends the inventation and this will cause the security warning to pop-up.

I actually think this worked last week, but I'm not positive, and i have not idea what could have changed.

Still need a solution though.

0
 
LVL 15

Expert Comment

by:will_scarlet7
ID: 12183795
I'll test it out more and see if I can suggest something tomorrow.
0
 
LVL 15

Accepted Solution

by:
will_scarlet7 earned 125 total points
ID: 12188453
Hi Ajaac,
I fiddled with it some and I think I got it to work. Try this:

Public Function CreateAppointment(strSubject As String, strBody As String, dtStartTime As Date, dtEndTime As Date, bolAllDay As Boolean, Optional strAttendees As String)
'On Error GoTo Errexit
Dim OlApp As New Outlook.Application, Appt As Object, safeAppt As Object
Set OlApp = CreateObject("Outlook.Application")
Set Appt = OlApp.Session.GetDefaultFolder(olFolderCalendar).Items
Set safeAppt = CreateObject("Redemption.SafeAppointmentItem")
Set Appt = OlApp.CreateItem(olAppointmentItem)
With Appt
    .Subject = strSubject
    .Start = dtStartTime
    .End = dtEndTime
    .AllDayEvent = bolAllDay
    .Body = strBody
    If Len(strAttendees) > 0 Then
        .RequiredAttendees = strAttendees
        .MeetingStatus = olMeeting
    End If
    .Importance = olImportanceHigh
    .ReminderSet = True
    .ReminderMinutesBeforeStart = 30
    .Save
End With

If Len(strAttendees) > 0 Then
    safeAppt.Item = Appt
    safeAppt.Recipients.Add (strAttendees)
    If safeAppt.Recipients.ResolveAll Then
        safeAppt.Send
    End If
End If

     Set Appt = Nothing
     Set safeAppt = Nothing
     Set OlApp = Nothing

Errexit:
    If Err <> 0 Then
        Debug.Print Err, Err.Description
        Stop
    End If
End Function
0
 
LVL 15

Expert Comment

by:will_scarlet7
ID: 12191352
I take that back. It works for me in some cases but not in others. It may work for you or not. Still fiddling...
0
 
LVL 15

Expert Comment

by:will_scarlet7
ID: 12412935
ThanX for the points Ajaac!
God bless!

Sam
0
 

Author Comment

by:ajaac
ID: 12413189
Sorry it took so long to get back to you.
I've been tied-up with other projects.
My code was missing the ResolveAll method and this seems to have fixed the problem.
Thanks again for you help
Allen
0

Featured Post

Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
QuickBooks® has a great invoice interface that we were happy with for a while but that changed in 2001 through no fault of Intuit®. Our industry's unit names are dictated by RUS: the Rural Utilities Services division of USDA. Contracts contain un…
Familiarize people with the process of utilizing SQL Server stored procedures from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Micr…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question