A Microsoft Outlook email forum. Outlook Banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Outlook and VBA
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Outlook automation



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old July 9th 08, 08:41 AM posted to microsoft.public.outlook.program_vba
Vaisakh M S
external usenet poster
 
Posts: 4
Default Outlook automation

OS: XP Professional
Office 2003 (no Exchange)

The quick description: I've got a .xls file with 6 fields: 'Start Date',
'End Date', 'Start Time', 'End Time', 'Subject' and 'Description'. I'd like
to programatically import this into an Outlook Calendar . I can do it
manually with File - Import/Export - From program/file - xls Windows -
Tell it the file, force duplicates to be overwritten, hit ok, job done. I
need the code to do this automatically, which I can then run from the
desktop. (Like the Access command '/x macroname')

I know it can probably be done using Office automation from the original
excel macro, but I'd like to keep it seperate, whenever the users opening the
outlook it should run as a background process and update calendar entries
from that particular file

Can anyone help? I'm open to alternative suggestions if absolutely necessary
Thanks.
Vaisakh
Ads
  #2  
Old July 15th 08, 03:06 PM posted to microsoft.public.outlook.program_vba
CPOjoe
external usenet poster
 
Posts: 3
Default Outlook automation

Coincidentally, and contrarily, I'm looking to do the reverse -- I have been
tasked with automating a process to extract those very same fields from
outlook, for a defined date range, into excel, and it needs to be via a
macro, push of a button, whatever.

Any ideas?

"Vaisakh M S" wrote:

OS: XP Professional
Office 2003 (no Exchange)

The quick description: I've got a .xls file with 6 fields: 'Start Date',
'End Date', 'Start Time', 'End Time', 'Subject' and 'Description'. I'd like
to programatically import this into an Outlook Calendar . I can do it
manually with File - Import/Export - From program/file - xls Windows -
Tell it the file, force duplicates to be overwritten, hit ok, job done. I
need the code to do this automatically, which I can then run from the
desktop. (Like the Access command '/x macroname')

I know it can probably be done using Office automation from the original
excel macro, but I'd like to keep it seperate, whenever the users opening the
outlook it should run as a background process and update calendar entries
from that particular file

Can anyone help? I'm open to alternative suggestions if absolutely necessary
Thanks.
Vaisakh

  #3  
Old July 18th 08, 05:38 PM posted to microsoft.public.outlook.program_vba
JP[_3_]
external usenet poster
 
Posts: 201
Default Outlook automation

Paste this code into a standard module in Excel. You will need to
adapt it for your particular needs, however. Run the
GetApptsFromOutlook() sub and adjust the dates accordingly. You will
also need to set a reference to the Outlook object library and
(optionally) have Outlook open when running the code.

Enjoy,
JP


Option Explicit

Sub GetApptsFromOutlook()
Application.ScreenUpdating = False
Call GetCalData("7/14/2008", "7/25/2008")
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(olFolderCalendar).Items

' ------------------------------------------------------------------
' the following code adapted from:
' http://www.outlookcode.com/article.aspx?id=30
' http://weblogs.asp.net/whaggard/arch...ate-range.aspx
'
With myCalItems
.Sort "[Start]", False
.IncludeRecurrences = True
End With
'
StringToCheck = "[Start] = " & Quote(StartDate & " 12:00 AM") & " AND
[End] = " & Quote(EndDate & " 11:59 PM")
Debug.Print StringToCheck
'
Set ItemstoCheck = myCalItems.Restrict(StringToCheck)
Debug.Print ItemstoCheck.count
' ------------------------------------------------------------------

If ItemstoCheck.count 0 Then
' we found at least one appt

Set MyBook = Excel.Workbooks.Add
Set rngStart = MyBook.Sheets(1).Range("A1")

With rngStart
.Offset(0, 0).Value = "Subject"
.Offset(0, 1).Value = "Start Date"
.Offset(0, 2).Value = "Start Time"
.Offset(0, 3).Value = "End Date"
.Offset(0, 4).Value = "End Time"
.Offset(0, 5).Value = "Location"
.Offset(0, 6).Value = "Categories"
End With

For Each MyItem In ItemstoCheck
If MyItem.Class = olAppointment Then
' MyItem is the appointment or meeting item we want
' set obj reference to it
Set ThisAppt = MyItem
NextRow = WorksheetFunction.CountA(Range("A:A"))

With rngStart
.End(xlDown).End(xlUp).Offset(NextRow, 0).Value =
ThisAppt.Subject
.End(xlDown).End(xlUp).Offset(NextRow, 1).Value =
Format(ThisAppt.Start, "MM/DD/YYYY")
.End(xlDown).End(xlUp).Offset(NextRow, 2).Value =
Format(ThisAppt.Start, "HH:MM AM/PM")
.End(xlDown).End(xlUp).Offset(NextRow, 3).Value =
Format(ThisAppt.End, "MM/DD/YYYY")
.End(xlDown).End(xlUp).Offset(NextRow, 4).Value =
Format(ThisAppt.End, "HH:MM AM/PM")
.End(xlDown).End(xlUp).Offset(NextRow, 5).Value =
ThisAppt.Location

If ThisAppt.Categories "" Then
.End(xlDown).End(xlUp).Offset(NextRow,
6).Value = ThisAppt.Categories
Else
.End(xlDown).End(xlUp).Offset(NextRow,
6).Value = "n/a"
End If
End With
End If
Next MyItem


Else
MsgBox "There are no appointments or meetings during the time you
specified. Exiting now.", vbCritical
End If

ExitProc:
Set myCalItems = Nothing
Set ItemstoCheck = Nothing
Set olNS = Nothing
Set olApp = Nothing
Set rngStart = Nothing
Set ThisAppt = Nothing
End Sub

Private Function Quote(MyText)
' from Sue Mosher's excellent book "Microsoft Outlook Programming"
Quote = Chr(34) & MyText & Chr(34)
End Function



On Jul 15, 10:06*am, CPOjoe wrote:
Coincidentally, and contrarily, I'm looking to do the reverse -- I have been
tasked with automating a process to extract those very same fields from
outlook, for a defined date range, into excel, and it needs to be via a
macro, push of a button, whatever.

Any ideas?


 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Outlook Automation: is there a better way? deko Outlook and VBA 9 June 6th 08 06:17 PM
Outlook Automation Automation Problem Out of Memory MikeA[_2_] Outlook and VBA 7 July 30th 07 02:31 PM
Outlook Automation Tylendal Outlook and VBA 3 April 24th 06 02:39 PM
Outlook automation using vbs Marceepoo Outlook - Installation 1 January 17th 06 04:18 AM
Help on Outlook automation Neo Outlook - General Queries 1 January 15th 06 04:49 PM


All times are GMT +1. The time now is 03:10 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.