Here is a bit that I picked up from someone here. I'm trying to reference a public folder in Outlook and pull a date from a specific appointment. I can get this to work for my personal calendar but I cannot get the code right to reference the public calendar.
Now I'm very green when it comes to VBA but I've messed around with the last line of this code in all sorts of ways and I still fail to get the object reference correct. I'm not sure if this has something to do with doing it from excel, offline, online, etc etc... I'm lost
Thanks for looking!
Code:
Sub GetApptsFromOutlook()
Application.ScreenUpdating = False
Call GetCalData("4/1/2013", "4/30/13")
Application.ScreenUpdating = True
End Sub
Private Sub GetCalData(StartDate As Date, Optional EndDate As Date)
' -------------------------------------------------
' Notes:
' If Outlook is not open, it still works, but much slower (~8 secs vs. 2 secs w/ Outlook open).
' Make sure to reference the Outlook object library before running the code
' End Date is optional, if you want to pull from only one day, use: Call GetCalData("7/14/2008")
' -------------------------------------------------
Dim olApp As Outlook.Application
Dim olNS As Outlook.Namespace
Dim myCalItems As Outlook.Items
Dim ItemstoCheck As Outlook.Items
Dim ThisAppt As Outlook.AppointmentItem
Dim MyItem As Object
Dim StringToCheck As String
Dim MyBook As Excel.Workbook
Dim rngStart As Excel.Range
Dim i As Long
Dim NextRow As Long
' if no end date was specified, then the requestor only wants one day, so set EndDate = StartDate
' this will let us return appts from multiple dates, if the requestor does in fact set an appropriate end date
If EndDate = "12:00:00 AM" Then
EndDate = StartDate
End If
If EndDate < StartDate Then
MsgBox "Those dates seem switched, please check them and try again.", vbInformation
GoTo ExitProc
End If
If EndDate - StartDate > 28 Then
' ask if the requestor wants so much info
If MsgBox("This could take some time. Continue anyway?", vbInformation + vbYesNo) = vbNo Then
GoTo ExitProc
End If
End If
' get or create Outlook object and make sure it exists before continuing
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then
Set olApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
If olApp Is Nothing Then
MsgBox "Cannot start Outlook.", vbExclamation
GoTo ExitProc
End If
Set olNS = olApp.GetNamespace("MAPI")
Set myCalItems = olNS.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Public Folders\All Public Folders\Business\Bottling-Home")
Now I'm very green when it comes to VBA but I've messed around with the last line of this code in all sorts of ways and I still fail to get the object reference correct. I'm not sure if this has something to do with doing it from excel, offline, online, etc etc... I'm lost
Thanks for looking!