Export av kontakter till MS Outlook
Här demonstreras en teknik för att exportera kontakter från Excel till kontaktregistret i Outlook.
Det kan i vissa situationer vara enklare att uppdatera / underhålla registret genom att göra arbetet i XL och därefter exportera till Outlook.
MS Outlook är ett systemresurskrävande program (åtminstone på mina datorer) varför det kan uppfattas att det tar lång tid vid hämtning av data. Ett tips är därför att du öppnar Outlook först och därefter exporterar önskad data.
Innan proceduren körs måste en referens sättas till Outlooks objektbibliotek. Det sker på följande sätt:
1. Öppna VB-Editorn i Excel.
2. Välj kommandot Verktyg | Referenser...
3. Bocka för Microsoft Outlook x.x Object Library.
Genom att sätta en referens till en specifik version av Outlooks Object Library ställs kravet, vid distribution, på att mottagarna också har tillgång till det. Istället kan en mer generell referens skapas genom att i procedurerna ange följande:
Dim OLObj as Object Set OLObj = CreateObject("Outlook.Application")
Den mest påtagliga nackdelen är att det inte går lika fort jämfört med ovanstående ansats.
"Kontakter" ska inte förväxlas med en personlig mapp eller en personlig adressbok i Outlooks struktur.Den tillhör kategorin inbyggda mappar och ingår i användarens postsystem. Den är en s k MAPI-folder. Det gör att vi dels måste anropa NameSpace i Outlook och dels definiera "Kontakter" som ett MAPIfolder-objekt. NameSpace används för att skapa kontakt med redan existerande objekt (se procedur nedan).
För att förhindra dubbletter i kontaktregistret filtreras dessa bort i samband med att data exporteras (se procedur nedan). Här finns många lösningar att tillgå.
Option Explicit
Sub Exportera_Kontakter()
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olColItems As Outlook.Items
Dim olItem As Outlook.ContactItem
Dim i As Long
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(10)
Set olColItems = olFolder.Items
Application.ScreenUpdating = Falsej = 0
j = Range("A2", Cells(2, 1).End(xlDown)).Count + 1
For i = 2 To j
If olColItems.Find("[CompanyName]= " & CStr(Cells(i, 1).Value)) _
Is Nothing Then
Set olItem = olColItems.Add
With olItem
.CompanyName = Cells(i, 1).Value
.BusinessAddressStreet = Cells(i, 2).Value
.BusinessAddressPostalCode = Cells(i, 3).Value
.BusinessAddressCity = Cells(i, 4).Value
.FullName = Cells(i, 5).Value
.Email1Address = Cells(i, 6).Value
.Save
End With
End If
Next i
Set olItem = Nothing
Set olColItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
Application.ScreenUpdating = True
MsgBox "Kontaktregistret uppdaterat!", vbInformation
End Sub
Vill vi inte exportera mha VBA kan vi istället göra det manuellt:
1. Öppna MS Outlook.
2. Välj kommandot Arkiv | Importera och exportera...
3. Följ anvisningarna i guiden.
4. Klart!
Tips:
- Ha endast ett kalkylblad i arbetsboken.
- Spara arbetsboken som Spara som Text (Tabbavgränsad) i XL innan import från Outlook påbörjas.
- I Outlook-Guiden väljs filtyp: Tabbavgränsade värden (Windows).