VBA: Outlook appointement macro problem

  • Thread starter Thread starter masani paresh
  • Start date Start date
M

masani paresh

Hi Friends,

We have almost done with the macro and it is working fine on some
*machines.* We have one question. Could you please help on this and we are
done.
On some machine below portion of code works in strenge manner.

For Each olkAppt In olkThisSeries
MsgBox Date & " " & DateValue(olkAppt.Start)

If Date < DateValue(olkAppt.Start) Then Exit Do

Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With

Next


The olkAppt.Start time returns always the date and time of first meeting and
hence this loop goes in infinite loop. What could be the reason here? We also
tried below code but no luck. Please note that it happens only on some
machine while working on another machines.

Do While True

MsgBox Date & " " & DateValue(olkAppt.Start)

If Date < DateValue(olkAppt.Start) Then Exit Do

Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With

Set olkAppt = olkThisSeries.GetNext

Loop

Thanks in advanced
 
It is a object of selected recurring meeting series.

Please refer below complete code: (It works on some machine but not others
because of problem mentioned in main thread)

Sub ApptWithNotesOnDelete()

Dim olkOldAppt As Outlook.AppointmentItem, _
olkItems As Outlook.Items, _
olkThisSeries As Outlook.Items, _
olkNewAppt As Outlook.AppointmentItem

Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set olkOldAppt = Application.ActiveExplorer.Selection(1)
Case "Inspector"
Set olkOldAppt = Application.ActiveInspector.CurrentItem
End Select

Set olkItems = Session.GetDefaultFolder(olFolderCalendar).Items
olkItems.Sort "[Start]"
olkItems.IncludeRecurrences = True

Set olkThisSeries = olkItems.Restrict("[Subject] = '" &
olkOldAppt.Subject & "'")

For Each olkAppt In olkThisSeries
If Date < DateValue(olkAppt.Start) Then Exit For
Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With
Next
olkOldAppt.Delete

Set olkNewAppt = Nothing
Set olkThisSeries = Nothing
Set olkItems = Nothing
Set olkOldAppt = Nothing
End Sub

Thanks,
Paresh
 
Thanks for reply Michael.

It is a object of selected recurring meeting. Please refer below complete
macro. It works on some machine and not on others because of problem
mentioned in main thread.

Sub ApptWithNotesOnDelete()

Dim olkOldAppt As Outlook.AppointmentItem, _
olkItems As Outlook.Items, _
olkThisSeries As Outlook.Items, _
olkNewAppt As Outlook.AppointmentItem

Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set olkOldAppt = Application.ActiveExplorer.Selection(1)
Case "Inspector"
Set olkOldAppt = Application.ActiveInspector.CurrentItem
End Select

Set olkItems = Session.GetDefaultFolder(olFolderCalendar).Items
olkItems.Sort "[Start]"
olkItems.IncludeRecurrences = True

Set olkThisSeries = olkItems.Restrict("[Subject] = '" &
olkOldAppt.Subject & "'")

For Each olkAppt In olkThisSeries
If Date < DateValue(olkAppt.Start) Then Exit For
Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With
Next
olkOldAppt.Delete

Set olkNewAppt = Nothing
Set olkThisSeries = Nothing
Set olkItems = Nothing
Set olkOldAppt = Nothing
End Sub

Thanks,
Paresh
 
Michael,

I got the solution for why it wasn't work on other machine. The problem was
missing of Microsoft Form Library. I have added in COM libraries.

I have one question I am using below statement in my macro:

Set redNewAppt = CreateObject("Redemption.SafeAppointmentItem").

This trows "ActivaX component can't create object" error.

While searching on net I found that it required redeption.dll and I included
it in COM libraries but still no luck. Could you please tell me what could be
wrong here?


Thanks,
Paresh




masani paresh said:
It is a object of selected recurring meeting series.

Please refer below complete code: (It works on some machine but not others
because of problem mentioned in main thread)

Sub ApptWithNotesOnDelete()

Dim olkOldAppt As Outlook.AppointmentItem, _
olkItems As Outlook.Items, _
olkThisSeries As Outlook.Items, _
olkNewAppt As Outlook.AppointmentItem

Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set olkOldAppt = Application.ActiveExplorer.Selection(1)
Case "Inspector"
Set olkOldAppt = Application.ActiveInspector.CurrentItem
End Select

Set olkItems = Session.GetDefaultFolder(olFolderCalendar).Items
olkItems.Sort "[Start]"
olkItems.IncludeRecurrences = True

Set olkThisSeries = olkItems.Restrict("[Subject] = '" &
olkOldAppt.Subject & "'")

For Each olkAppt In olkThisSeries
If Date < DateValue(olkAppt.Start) Then Exit For
Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With
Next
olkOldAppt.Delete

Set olkNewAppt = Nothing
Set olkThisSeries = Nothing
Set olkItems = Nothing
Set olkOldAppt = Nothing
End Sub

Thanks,
Paresh
Michael Bauer said:
What is olkThisSeries?

--
Best regards
Michael Bauer - MVP Outlook

: Outlook Categories? Category Manager Is Your Tool
: VBOffice Reporter for Data Analysis & Reporting
: <http://www.vboffice.net/product.html?pub=6&lang=en>


Am Wed, 4 Feb 2009 22:51:30 -0800 schrieb masani paresh:
 
Does CreateObject work with other objects? If so, it's possible that you
have renamed the Redemption objects.

--
Best regards
Michael Bauer - MVP Outlook

: Outlook Categories? Category Manager Is Your Tool
: VBOffice Reporter for Data Analysis & Reporting
: <http://www.vboffice.net/product.html?pub=6&lang=en>


Am Sun, 8 Feb 2009 22:58:01 -0800 schrieb masani paresh:
Michael,

I got the solution for why it wasn't work on other machine. The problem was
missing of Microsoft Form Library. I have added in COM libraries.

I have one question I am using below statement in my macro:

Set redNewAppt = CreateObject("Redemption.SafeAppointmentItem").

This trows "ActivaX component can't create object" error.

While searching on net I found that it required redeption.dll and I included
it in COM libraries but still no luck. Could you please tell me what could be
wrong here?


Thanks,
Paresh




masani paresh said:
It is a object of selected recurring meeting series.

Please refer below complete code: (It works on some machine but not others
because of problem mentioned in main thread)

Sub ApptWithNotesOnDelete()

Dim olkOldAppt As Outlook.AppointmentItem, _
olkItems As Outlook.Items, _
olkThisSeries As Outlook.Items, _
olkNewAppt As Outlook.AppointmentItem

Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set olkOldAppt = Application.ActiveExplorer.Selection(1)
Case "Inspector"
Set olkOldAppt = Application.ActiveInspector.CurrentItem
End Select

Set olkItems = Session.GetDefaultFolder(olFolderCalendar).Items
olkItems.Sort "[Start]"
olkItems.IncludeRecurrences = True

Set olkThisSeries = olkItems.Restrict("[Subject] = '" &
olkOldAppt.Subject & "'")

For Each olkAppt In olkThisSeries
If Date < DateValue(olkAppt.Start) Then Exit For
Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With
Next
olkOldAppt.Delete

Set olkNewAppt = Nothing
Set olkThisSeries = Nothing
Set olkItems = Nothing
Set olkOldAppt = Nothing
End Sub

Thanks,
Paresh
Michael Bauer said:
What is olkThisSeries?

--
Best regards
Michael Bauer - MVP Outlook

: Outlook Categories? Category Manager Is Your Tool
: VBOffice Reporter for Data Analysis & Reporting
: <http://www.vboffice.net/product.html?pub=6&lang=en>


Am Wed, 4 Feb 2009 22:51:30 -0800 schrieb masani paresh:

Hi Friends,

We have almost done with the macro and it is working fine on some
*machines.* We have one question. Could you please help on this and we are
done.
On some machine below portion of code works in strenge manner.

For Each olkAppt In olkThisSeries
MsgBox Date & " " & DateValue(olkAppt.Start)

If Date < DateValue(olkAppt.Start) Then Exit Do

Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With

Next


The olkAppt.Start time returns always the date and time of first meeting
and
hence this loop goes in infinite loop. What could be the reason here? We
also
tried below code but no luck. Please note that it happens only on some
machine while working on another machines.

Do While True

MsgBox Date & " " & DateValue(olkAppt.Start)

If Date < DateValue(olkAppt.Start) Then Exit Do

Set olkNewAppt = Application.CreateItem(olAppointmentItem)
With olkNewAppt
.Start = olkAppt.Start
.End = olkAppt.End
.Subject = olkAppt.Subject
.Body = olkAppt.Body
.Location = olkAppt.Location
.ReminderSet = olkAppt.ReminderSet
.BusyStatus = olkAppt.BusyStatus
.Save
End With

Set olkAppt = olkThisSeries.GetNext

Loop

Thanks in advanced
 
Back
Top