Microsoft Outlook does not support importing multiple vCards - you need to import them one vcard at a time. While this is tolerable for a few, its frustrating when you a large number to import.
This can also be done using VBA, basically automating the process you'd use to do it manually: open each contact, save in your default Contacts folder then close it. Unless you are Superman, the macro will finish long before you would.
Begin by creating a folder named vcards on root of the c:\ drive. The path will be c:\vcards. Copy all your individual vCard files (.vcf) to this folder. (You can use a different folder but will need to update the macro with the correct folder path.)
Next open Outlook and press ALT + F11 to open the VBA editor.
Go to Tools, References and select Microsoft Scripting Runtime and Windows Script Host Object Model from the list and place checks in the box next to each and click OK.
Click Insert, Module and copy and paste the following code into the blank module. Save and run the macro to automatically import and save all the individual files into Outlook.
Sub OpenSaveVCard() Dim objWSHShell As IWshRuntimeLibrary.IWshShell Dim objOL As Outlook.Application Dim colInsp As Outlook.Inspectors Dim strVCName As String Dim fso As Scripting.FileSystemObject Dim fsDir As Scripting.Folder Dim fsFile As Scripting.File Dim vCounter As Integer Set fso = New Scripting.FileSystemObject Set fsDir = fso.GetFolder("C:\vcards") For Each fsFile In fsDir.Files 'original code 'strVCName = "C:\vcards\" & fsFile.Name 'Zeda's fix for spaces in filenames strVCName = """C:\vcards\" & fsFile.Name & """" Set objOL = CreateObject("Outlook.Application") Set colInsp = objOL.Inspectors If colInsp.Count = 0 Then Set objWSHShell = CreateObject("WScript.Shell") objWSHShell.Run strVCName Set colInsp = objOL.Inspectors If Err = 0 Then Do Until colInsp.Count = 1 DoEvents Loop colInsp.Item(1).CurrentItem.Save colInsp.Item(1).Close olDiscard Set colInsp = Nothing Set objOL = Nothing Set objWSHShell = Nothing End If End If Next End Sub
Import Contacts Saved as MSG Files
The macro above works with vCard files and replicates the action of opening the vCard and clicking Save, which saves it to the Contacts folder. It won''t work with Contacts saved as .msg files, which are saved to Contacts using the Copy to My Contacts command.
By changing Save in colInsp.Item(1).CurrentItem.Save to Copy or Move, we can import Contacts saved as .msg files.
However, in my tests, Copy created duplicates, while Move created just one contact.
At the top of the macro, under the Dim statements, add these two lines. This tells Outlook where you want to it put the contacts.
Dim olFolder As Outlook.Folder
Set olFolder = Session.GetDefaultFolder(olFolderContacts)
Change the line that saves the message to Move:
Now when you run the macro on a folder containing contacts saved as .msg files, it will place a copy in your default Contacts folder.