Export email from Outlook into Access...

E

EdEarnshaw

I've come across some vba code allowing me to export emails from Outlook to
Access. It works wonderfully, except that repeating the operation adds
duplicate entries to the table in Access and forcing Access to not accept
duplicate entries stops the Outlook macro.

The reason I need to export out of Outlook stems from the fact that these
emails will be imported from several different Outlook accounts.

Is there any way to have the vba code check for duplicates before exporting
the emails, and if there are duplicates to export what is not a duplicate.

I'm using Outlook 2007 and Access 2007. The macro I'm using with Outlook is
as follows:

Sub ExportMailByFolder()
'Export specified fields from each mail
'item in selected folder.
Dim ns As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Set ns = GetNamespace("MAPI")
Set objFolder = ns.PickFolder
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim intCounter As Integer
Set adoConn = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
'DSN and target file must exist.
adoConn.Open "DSN=OutlookData;"
adoRS.Open "SELECT * FROM email", adoConn, _
adOpenDynamic, adLockOptimistic
'Cycle through selected folder.
For intCounter = objFolder.Items.Count To 1 Step -1
With objFolder.Items(intCounter)
'Copy property value to corresponding fields
'in target file.
If .Class = olMail Then
adoRS.AddNew
adoRS("OutlookID") = .EntryID
adoRS("Subject") = .Subject
adoRS("Body") = .Body
adoRS("FromName") = .SenderName
adoRS("ToName") = .To
adoRS("FromAddress") = .SenderEmailAddress
adoRS("CCName") = .CC
adoRS("BCCName") = .BCC
adoRS("DateRecieved") = .ReceivedTime
adoRS("DateSent") = .SentOn
adoRS.Update
End If
End With
Next
adoRS.Close
Set adoRS = Nothing
Set adoConn = Nothing
Set ns = Nothing
Set objFolder = Nothing
End Sub
 
M

Michael Bauer [MVP - Outlook]

Before calling adoRS.AddNew you can use the Find function and search for
whatever will identify the recordset for sure, for instance look whether or
not the EntryID already exists.

--
Best regards
Michael Bauer - MVP Outlook

: Outlook Categories? Category Manager Is Your Tool
: VBOffice Reporter for Data Analysis & Reporting
: <http://www.vboffice.net/product.html?pub=6&lang=en>


Am Thu, 4 Jun 2009 15:02:07 -0700 schrieb EdEarnshaw:
 
E

EdEarnshaw

This helps, but I think I need a little more guidance as I do not know vba at
all and I'm not even sure what to be looking for.

I've added this line
adoRS.Find (OutlookID) Like .EntryID

but what do I actually need to be adding in code-wise that will keep the
macro from importing the duplicates.

Perhaps there is another solution to this problem that I'm not seeing.
 
M

Michael Bauer [MVP - Outlook]

Please use the ADO manual and see how the Find function works.

--
Best regards
Michael Bauer - MVP Outlook

: Outlook Categories? Category Manager Is Your Tool
: VBOffice Reporter for Data Analysis & Reporting
: <http://www.vboffice.net/product.html?pub=6&lang=en>


Am Mon, 15 Jun 2009 13:27:01 -0700 schrieb EdEarnshaw:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Looping Subfolders in this code 2
Outlook Get EntyID 1
ADO Connection String Syntax 6
Getting value from previous record 1
CopyFromRecordset 1
Unique Values 2
Bring Data from Access 3
SQL instruction 1

Top