Calendar Problems

How to Reliably Detect Outlook Meeting Time Changes Using Access VBA

Emma BrownEmma Brown Oct 26, 2026 868 views

Question details

The user needs a reliable method to track and detect date or time modifications to Outlook calendar meetings from a Microsoft Access database using VBA.

How to Reliably Detect Outlook Meeting Time Changes Using Access VBA
Product
Microsoft Outlook / Access
Device & OS
not provided
Scenario
Synchronizing or tracking Outlook calendar meeting updates from an external Access database via VBA scripts.
Observed behavior
The default Outlook EntryID changes whenever a meeting's date or time is modified, making it impossible to detect schedule changes using the EntryID alone.
Before you start

Ensure you have proper VBA references set for the Microsoft Outlook Object Library in your Access database before attempting to read calendar items.

Solution 1Recommended

Use GlobalAppointmentID to Track Meeting Changes

The most reliable way to track meeting updates is by using the GlobalAppointmentID property, which remains persistent even if the meeting time changes.

Unlike the EntryID, which Outlook regenerates when a calendar item is moved or modified, the GlobalAppointmentID remains stable for meetings. By storing this ID alongside other meeting details in your database, you can reliably identify the exact same meeting during future synchronizations.

1
Extract Meeting Properties

In your VBA script, modify your property extraction to retrieve the 'GlobalAppointmentID', 'EntryID', 'Subject', 'Start', 'End', and 'LastModificationTime' for each calendar item.

2
Store Data in Access

Save these retrieved properties into your Access synchronization table, ensuring 'GlobalAppointmentID' is indexed for quick lookups.

3
Compare and Detect Changes

During your next sync loop, query the Outlook calendar, match records in your Access table using the 'GlobalAppointmentID', and compare the current 'Start' and 'End' values against your stored values to detect any time modifications.

Use GlobalAppointmentID to Track Meeting Changes
Handling Standard Appointments: For standard appointments that lack a stable global identifier (unlike meetings with attendees), you should use VBA to create and store a custom identifier (UserProperty) upon the item's creation.
Free Microsoft Office alternative

Looking for a Lightweight, Reliable Office Suite?

While troubleshooting complex VBA scripts and API connections in Microsoft Office, consider trying WPS Office as a lightweight, fast, and free alternative for your everyday document, spreadsheet, and presentation tasks.

  1. 1. Download WPS Office: Visit the official WPS website and download the free installation package for your operating system.
  2. 2. Install the Suite: Run the installer and follow the quick on-screen instructions to set up WPS Office.
  3. 3. Open Your Files: Double-click any existing Word, Excel, or PowerPoint file to open and edit it seamlessly in WPS Office.
Fully compatible with Microsoft Office formats, including .docx, .xlsx, and .pptx.Supports basic VBA macros in WPS Spreadsheets for your automated workflows.Lightweight installation with incredibly fast startup times.Familiar user interface that requires zero learning curve for Office users.
QA img-9

Frequently Asked Questions

Why does the Outlook EntryID change when I modify a meeting time?

Outlook treats significant changes to calendar items, such as date or time modifications, as creating a new instance of the item in the backend database. This structural change results in a newly generated EntryID.

Can I just use the Subject and Attendees to identify a meeting in VBA?

No, comparing the Subject and Attendees is not reliable. Multiple distinct meetings (such as recurring events, one-on-ones, or follow-ups) can share the exact same subject line and participant list, leading to false matches in your database.

What should I do if the GlobalAppointmentID is missing for a calendar item?

Standard appointments (those without invited attendees) may not generate a GlobalAppointmentID. In such cases, use VBA's UserProperties collection to generate and attach a unique string identifier (like a GUID) to the appointment when it is first created, and track that instead.