Код ниже предназначен для сбора контактов из папки в Outlook в Excel.Пользователь может выбрать папку, потому что я хочу, чтобы он выбрал папку, которая не является папкой контактов по умолчанию.
Когда я запускаю код, используя папку контактов по умолчанию, он работает.Тем не менее, когда я пытаюсь использовать PickFolder, кажется, что он выбирает папку, выбранную в качестве переменной, но не выбирает никаких контактов .... Я положил ** / Emboldened, где он не работает ....
Любая помощь будет принята с благодарностью.
Спасибо
Кристофер
Private Sub OutlookImport_Click()
Dim objOutlook 'Outlook object containing contact information
Dim objNamespace 'Interface definition between Excel and Outlook
Dim colContacts 'Collection of contacts in Outlook for harvesting
Dim objExcel As Worksheet 'Worksheet containing extract of Outlook contacts
Dim i As Integer 'Row counter
Dim objContact 'VCard object within Outlook Contacts
'Prompt user to select folder containing contacts for harvesting
Dim OlApp As New Outlook.Application 'Instance of Microsoft Outlook application
Dim NS As Outlook.Namespace
Dim FolderChosen As Outlook.MAPIFolder 'Folder selected by user
Set NS = OlApp.GetNamespace("MAPI")
Set FolderChosen = NS.PickFolder
On Error Resume Next
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objExcel = ActiveWorkbook.Sheets("Outlook Contacts")
**
'Set colContacts = objNamespace.GetDefaultFolder(olFolderContacts).Items 'using this line works
Set colContacts = objNamespace.GetFolder(FolderChosen).Items 'using this line doesn't
**
'Set objExcel = CreateObject("Excel.Application")
'objExcel.Visible = True
'Set objWorkbook = objExcel.Workbooks.Add()
'Set objWorksheet = objWorkbook.Worksheets(3)
'Populate the titles
objExcel.Cells(1, 1) = "Client Book ID"
objExcel.Cells(1, 2) = "Contact ID"
objExcel.Cells(1, 3) = "Title"
objExcel.Cells(1, 4) = "First Name"
objExcel.Cells(1, 5) = "Middle Name"
objExcel.Cells(1, 6) = "Last Name"
objExcel.Cells(1, 7) = "Suffix"
objExcel.Cells(1, 8) = "Job Title"
objExcel.Cells(1, 9) = "Department"
objExcel.Cells(1, 10) = "CompanyName"
i = 2
For Each objContact In colContacts
' objExcel.Cells(1, 1) = "Client Book ID"
'objExcel.Cells(1, 2) = "Contact ID"
objExcel.Cells(i, 3).Value = objContact.Title
objExcel.Cells(i, 4).Value = objContact.FirstName
objExcel.Cells(i, 5).Value = objContact.MiddleName
objExcel.Cells(i, 6).Value = objContact.LastName
objExcel.Cells(i, 7).Value = objContact.Suffix
objExcel.Cells(i, 8).Value = objContact.JobTitle
objExcel.Cells(i, 9).Value = objContact.Department
objExcel.Cells(i, 10).Value = objContact.CompanyName
i = i + 1
If i > 50 Then Stop - 'just in to make it run quicker
Next
End Sub