Thank you Warship.
All attributes filled in this userform will go to a worksheet called "Result".
Where should i insert the code in order for the info to show in the drop down menu of the userform, the dropbox is called "Ownerbox"?
I have modified the code to match my need, the chnages to the code are noted in "bold". Sorry i m still new to VBA so i might have basic questions. Please let me know if i have missed anything.
Thank you
Sub Import_Contacts()
'Outlook objects.
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olConItems As Outlook.Items
Dim olItem As Object
'Excel objects.
Dim wbBook As Workbook
Dim wsSheet As Worksheet
'Location in the imported contact list.
Dim lnContactCount As Long
Dim strDummy As String
'Turn off screen updating.
Application.ScreenUpdating = False
'Initialize the Excel objects.
Set wbBook = ThisWorkbook (should it be the saved name of the file?)
Set wsSheet = wbBook.phonebook (the name of the new worksheet that the outlook will import the data on)
'Format the target worksheet.
With wsSheet
.Range("A1").CurrentRegion.Clear
.Cells(1, 1).Value = "Name"
.Cells(1, 2).Value = "Title"
.Cells(1, 3).Value = "Business Phone"
.Cells(1, 4).Value = "Location"
.Cells(1, 5).Value = "Department"
.Cells(1, 6).Value = "E-mail Adress"
.Cells(1, 7).Value = "Company"
.Cells(1, 8).Value = "Alias" ( the titiles of my column on the worksheet "phonebook", and it is also the attributes that will be imported from outlook)
With .Range("A1:F1")
.Font.Bold = True
.Font.ColorIndex = 10
.Font.Size = 11
End With
End With
wsSheet.Activate
'Initalize the Outlook variables with the MAPI namespace and the default Outlook folder of the current user.
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(10)
Set olConItems = olFolder.Items
'Row number to place the new information on; starts at 2 to avoid overwriting the header
lnContactCount = 2
'For each contact: if it is a business contact, write out the business info in the Excel worksheet;
'otherwise, write out the personal info.
For Each olItem In olConItems
If TypeName(olItem) = "ContactItem" Then
With olItem
If InStr(olItem.CompanyName, strDummy) > 0 Then
Cells(lnContactCount, 1).Value = .Name
Cells(lnContactCount, 2).Value = .Title
Cells(lnContactCount, 3).Value = .Businessphone
Cells(lnContactCount, 4).Value = .Location
Cells(lnContactCount, 5).Value = .Department
Cells(lnContactCount, 6).Value = .Emailadress
Cells(lnContactCount, 7).Value = .Company
Cells(lnContactCount, 8).Value = .Alias (all bolted titles are the attributes that are shown on the outlook)
End If
wsSheet.Hyperlinks.Add Anchor:=Cells(lnContactCount, 6), _
Address:="mailto:" & Cells(lnContactCount, 6).Value, _
TextToDisplay:=Cells(lnContactCount, 6).Value
End With
lnContactCount = lnContactCount + 1
End If
Next olItem
'Null out the variables.
Set olItem = Nothing
Set olConItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
'Sort the rows alphabetically using the CompanyName or FullName as appropriate, and then autofit.
With wsSheet
.Range("A2", Cells(2, 6).End(xlDown)).Sort key1:=Range("A2"), order1:=xlAscending
.Range("A:F").EntireColumn.AutoFit
End With
'Turn screen updating back on.
Application.ScreenUpdating = True
MsgBox "The list has successfully been created!", vbInformation
End Sub