Relentim
asked on
Can't get macro to run in Outlook 2010
I have this macro that used to run fine in Outlook 2007.
Now when I try to run it in 2010 I get mixed results.
Run in Visual Basic Editor: No problems, runs fine.
Run from Developer tab > Macros > Project: Nothing happens
Run from Developer Tab > Macros > Macros > Project > Run: "Sub or Function not defined." I can't see where in the code this is referring to.
I have digitally signed my macro.
My macro security is on: "Notifications for all macros".
Now when I try to run it in 2010 I get mixed results.
Run in Visual Basic Editor: No problems, runs fine.
Run from Developer tab > Macros > Project: Nothing happens
Run from Developer Tab > Macros > Macros > Project > Run: "Sub or Function not defined." I can't see where in the code this is referring to.
I have digitally signed my macro.
My macro security is on: "Notifications for all macros".
Sub CancApt()
Dim olkFld As Outlook.Folder, _
olkLst As Outlook.Items, _
olkItemsInDateRange As Outlook.Items, _
olkApt As Outlook.AppointmentItem, _
strRestriction As String, _
intCnt As Integer, _
intIdx As Integer, _
intAnswer As String, _
daStart As Date, _
daEnd As Date
'Enter a start and end date'
daStart = InputBox("Enter a start date.", "Purge Canceled Appointments Start", (DateAdd("d", -7, Date)))
daEnd = InputBox("Enter an end date.", "Purge Canceled Appointments End", (DateAdd("d", 60, Date)))
'Construct a filter for the date range.
strRestriction = "[Start] >= '" & daStart _
& "' AND [End] <= '" & daEnd & "'"
'Select calendar items in current folder
intAnswer = MsgBox("Have you selected the calendar?", vbYesNo, "Wait")
If intAnswer = vbYes Then
Else
GoTo EndMacro
End If
Set olkFld = Application.ActiveExplorer.CurrentFolder
Set olkLst = olkFld.Items
'To include recurring appointments, sort by using the Start property.
olkLst.IncludeRecurrences = True
olkLst.Sort "[Start]"
'Restrict the Items collection.
Set olkItemsInDateRange = olkLst.Restrict(strRestriction)
'Loop to count the items'
For Each olkApt In olkItemsInDateRange
intCnt = intCnt + 1
Next
'Loop to process the items'
For intIdx = intCnt To 1 Step -1
Set olkApt = olkItemsInDateRange(intIdx)
If Left(olkApt.Subject, 9) = "Canceled:" Then
olkApt.Delete
End If
Next
EndMacro:
Set olkFld = Nothing
Set olkLst = Nothing
Set olkApt = Nothing
MsgBox "Purge complete.", vbInformation + vbOKOnly, "Purge Canceled Appointments"
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
It was in a normal module.
I've now put it in thisoutlooksession and it works.
I've now put it in thisoutlooksession and it works.
ASKER
It was in a normal module.
I've now put it in thisoutlooksession and it works.
Thanks.