Solved

VB6 - Issue to send the calandar event to required attendees Microsoft Outlook

Posted on 2014-07-25
16
143 Views
Last Modified: 2014-08-07
Hi

I'm having a problem with the below code.

This code will create a Microsoft Outlook event and all add required attendees.

The issue I'm getting is that it does not send to attendees at all, unless i open the calendar event after and then, click send.

I really want to send it right away without having to re open the even.

How can i do that?

Thanks

 Dim objApp As Outlook.Application
                                Dim objNS As Outlook.Namespace
                                Dim objFolder As Outlook.MAPIFolder
                                Dim objDummy As Outlook.MailItem
                                Dim objRecip As Outlook.Recipient
                                Dim objAppt As Outlook.AppointmentItem
                                Dim strMsg As String
                                Dim strName As String
                                On Error Resume Next

                                ' ### name of person whose Calendar you want to use ###
                               
                                strName = "email.address"

                                Set objApp = CreateObject("Outlook.Application")
                                Set objNS = objApp.GetNamespace("MAPI")
                                Set objDummy = objApp.CreateItem(olMailItem)
                                Set objRecip = objDummy.Recipients.Add(strName)
                                objRecip.Resolve
                                If objRecip.Resolved Then
                                    On Error Resume Next
                                    Set objFolder = _
                                    objNS.GetSharedDefaultFolder(objRecip, _
                                                                 olFolderCalendar)
                                    If Not objFolder Is Nothing Then
                                        Set objAppt = objFolder.Items.Add
                                        If Not objAppt Is Nothing Then
                                            With objAppt
                                            .RequiredAttendees = "email.address;email.address"
                                                .Subject = "Store flip "
                                                .Start = year1 & "/" & month1 & "/" & day1
                                                .AllDayEvent = True
                                                .Body = "Please create in new store location" 
                                                .BusyStatus = olBusy
                                                .Send
                                                .Save
                                            End With
                                        End If
                                    End If
                                Else
                                    MsgBox "Could not find " & Chr(34) & strName & Chr(34), , _
                                           "User not found"
                                End If

                                Set objApp = Nothing
                                Set objNS = Nothing
                                Set objFolder = Nothing
                                Set objDummy = Nothing
                                Set objRecip = Nothing
                                Set objAppt = Nothing

Open in new window

0
Comment
Question by:Wilder1626
  • 10
  • 6
16 Comments
 
LVL 21

Expert Comment

by:Randy Poole
ID: 40219339
Before you set it to nothing
objDummy .Send
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40219619
On row 35, i do have .Send

do i need to set that 2 times?
0
 
LVL 21

Expert Comment

by:Randy Poole
ID: 40219671
ahh no, first remove your on error resume next, to see what is happening.  You may be getting an error and may not know it.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 11

Author Comment

by:Wilder1626
ID: 40219797
I have removed the ON ERROR RESUME NEXT. I don't have any errors.

i may add that the attendees are network users only and i'm on Lync also. I dont know if this can change something in the config.
0
 
LVL 21

Expert Comment

by:Randy Poole
ID: 40219865
You had 2 on error resume next, did you remove both?
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40219973
Yes, both are removed and no error happen
0
 
LVL 21

Expert Comment

by:Randy Poole
ID: 40220007
I have a feeling that the application is exiting too soon and does not have a chance to be sent. Move your objects outside your function (declare globally) and place a timer on the form that waits xx seconds before setting the objects to null
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40220074
if i put a sleep time in between, should this work normally?

I dont see any change in the result.

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 Else
                                    MsgBox "Could not find " & Chr(34) & strName & Chr(34), , _
                                           "User not found"
                                End If
                            

                                'Timer1
                                Sleep 50000
                                
                                Set objApp = Nothing
                                Set objNS = Nothing
                                Set objFolder = Nothing
                                Set objDummy = Nothing
                                Set objRecip = Nothing
                                Set objAppt = Nothing

                            End If

Open in new window

0
 
LVL 21

Expert Comment

by:Randy Poole
ID: 40220378
sleep isn't going to relinquish control back to the program.  That's why you set a timer after the function then n the timer trigger close the items.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40220452
i just tried that but still the same result.

How would you set the timer?

Just like this?
    Set objApp = Nothing
    Set objNS = Nothing
    Set objFolder = Nothing
    Set objDummy = Nothing
    Set objRecip = Nothing
    Set objAppt = Nothing

Open in new window

0
 
LVL 21

Accepted Solution

by:
Randy Poole earned 500 total points
ID: 40220516
List the contents of this entire sub routine
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40221352
Hi Randy

even if i put the entire sub routine in the timer, i still have the same result.
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40221861
After some other tests, still not a good result.

is it possible to run the script but when it will be the time to send, it will let me do it manually bu clicking on the send button?


.RequiredAttendees = "email.address;email.address"
                                                .Subject = "Store flip "
                                                .Start = year1 & "/" & month1 & "/" & day1
                                                .AllDayEvent = True
                                                .Body = "Please create in new store location" 
                                                .BusyStatus = olBusy

Open in new window

0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40222546
i found it. i need to use .Display.

I will do some test
0
 
LVL 11

Author Comment

by:Wilder1626
ID: 40223182
i still have the same issue

but i think i know why, but cannot see how to fix this.

when the calendar app display, if i click inside the RequiredAttendees field, it validate the name. then, it send the appointment. But if i dont select the attendees field, it does not work. Probably because it does not recognize the email address.

would you know why?
0
 
LVL 11

Author Closing Comment

by:Wilder1626
ID: 40246536
Hi Randy

this is working now. Thanks a lot for your help.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

820 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