Solved

Can't get macro to run in Outlook 2010

Posted on 2010-08-18
3
863 Views
Last Modified: 2012-06-27
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".

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

Open in new window

0
Comment
Question by:Relentim
  • 2
3 Comments
 
LVL 59

Accepted Solution

by:
Chris Bottomley earned 500 total points
ID: 33463155
WHere have you placed the code, a normal module or in thisoutlooksession

Chris
0
 
LVL 1

Author Comment

by:Relentim
ID: 33463191
Oh!
It was in a normal module.
I've now put it in thisoutlooksession and it works.

Thanks.
0
 
LVL 1

Author Closing Comment

by:Relentim
ID: 33463192
It was in a normal module.
I've now put it in thisoutlooksession and it works.
0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

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

Is your Office 365 signature not working the way you want it to? Are signature updates taking up too much of your time? Let's run through the most common problems that an IT administrator can encounter when dealing with Office 365 email signatures.
In this step by step procedure, you will come to know the details of creating an Outlook meeting in 2007, 2010, 2013 & 2016.
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

839 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