BiSHGoD
asked on
Import Contacts into Outlook 2003 from CSV
Currently I have a CSV file, non-standard headers sadly (as in ADDR1 instead of Address1), and I need it to import each record into Outlook as a contact.
I can do it manually but I want to do it using VB.NET (Visual Studio 2005 if it matters).
I know there are better ways but what I was considering was to read the CSV into an array and split the records up. Then put that into Outlook.
You would just Loop this for each record I assume:
Dim olApp As Outlook.Application
olApp = CreateObject("Outlook.Appl ication")
Dim olNs As Outlook.NameSpace
olNs = olApp.GetNamespace("MAPI")
olNs.Logon()
Dim olItem As Outlook.ContactItem
olItem = olApp.CreateItem(olContact Item)
With olItem
.FullName = Name
.Birthday = BDay
.CompanyName = Company
.HomeTelephoneNumber = Phone
.Email1Address = Email
.JobTitle = Job
.HomeAddress = ADDR
End With
olItem.Save()
The problem I have is loading the CSV and splitting it up into variables that I can loop through.
Also the actual data I need is only Name, Company, and Phone number. The rest is just a bonus. I'm eventually going to schedule this to happen weekly, no Forms needed just a Console App.
I can do it manually but I want to do it using VB.NET (Visual Studio 2005 if it matters).
I know there are better ways but what I was considering was to read the CSV into an array and split the records up. Then put that into Outlook.
You would just Loop this for each record I assume:
Dim olApp As Outlook.Application
olApp = CreateObject("Outlook.Appl
Dim olNs As Outlook.NameSpace
olNs = olApp.GetNamespace("MAPI")
olNs.Logon()
Dim olItem As Outlook.ContactItem
olItem = olApp.CreateItem(olContact
With olItem
.FullName = Name
.Birthday = BDay
.CompanyName = Company
.HomeTelephoneNumber = Phone
.Email1Address = Email
.JobTitle = Job
.HomeAddress = ADDR
End With
olItem.Save()
The problem I have is loading the CSV and splitting it up into variables that I can loop through.
Also the actual data I need is only Name, Company, and Phone number. The rest is just a bonus. I'm eventually going to schedule this to happen weekly, no Forms needed just a Console App.
ASKER
Sorry, been a bit busy that I forgot to respond.
That code snippet didn't work in my environment. I already have some vb.net code, above, and would have liked to build on that.
Consequently I did figure out how to code it myself in VB.NET.
That code snippet didn't work in my environment. I already have some vb.net code, above, and would have liked to build on that.
Consequently I did figure out how to code it myself in VB.NET.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
----------
a few weeks ago i wrote a few scripts on this site doing this and a bit more, but they are VBS so you can add them to the task scheduler
for the fun of it [well almost] this is your console vb.net version based on c:\contacts.csv
you don't need the headers but add the fields based on the column in the csv
didn't add robust error handling only a simple try catch and a finally to clean up
if you test it on a copy of your data first, and compile it into an exe you can add it to the task scheduler for automatic runs
---
Imports System.IO
Module Module1
Sub Main()
Dim objNS As Object, oOlFolder As Object, objOutlook As Object
Dim myItems As Object, objContact As Object
Const olFolderContacts = 10
Try
objOutlook = CreateObject("Outlook.Appl
objNS = objOutlook.GetNamespace("M
oOlFolder = objNS.GetDefaultFolder(olF
myItems = oOlFolder.Items
Dim strContact() As String
Dim strLine As String
If System.IO.File.Exists("c:\
Dim objstreamreader As StreamReader = System.IO.File.OpenText("t
strLine = objstreamreader.ReadLine
Do Until strLine Is Nothing
strContact = strLine.Split(",")
objContact = myItems.Add("IPM.Contact.C
objContact.FullName = strContact(0)
objContact.CompanyName = strContact(1)
objContact.Email1Address = strContact(2)
objContact.BusinessTelepho
objContact.HomeTelephoneNu
objContact.BusinessFaxNumb
objContact.MobileTelephone
objContact.BusinessAddress
objContact.Department = strContact(8)
objContact.OfficeLocation = strContact(9)
objContact.ManagerName = strContact(10)
objContact.Body = strContact(11)
objContact.Save()
strLine = objstreamreader.ReadLine()
Loop
objstreamreader.Close()
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
myItems = Nothing
oOlFolder = Nothing
objNS = Nothing
objOutlook = Nothing
objContact = Nothing
End Try
End Sub
End Module
---
----------
bruintje
share what you know, learn what you don't