Outlookから連絡先をインポートするためのコードを作成しました。C#のバージョン4.0を使用して.netFrameworkでアプリケーションを作成しました。
コードは次のとおりです-
OutLook._Application outlookObj = new OutLook.Application();
outlookObj.ActiveExplorer();
OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder)outlookObj.Session
.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
comboDelimiter.Properties.Items.Clear();
if (!comboDelimiter.Properties.Items.Contains("Default"))
{
comboDelimiter.SelectedText = "Default";
comboDelimiter.Properties.Items.Add("Default");
}
//VERIFYING THE CUSTOM FOLDER IN OUT LOOK .
foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders)
{
if (!comboDelimiter.Properties.Items.Contains(subFolder.Name))
{
comboDelimiter.Properties.Items.Add(subFolder.Name);
}
}
この関数は、Outlookの連絡先の特定のフォルダから連絡先を読み取るために使用されます-
private DataSet GetContactsFromFolder(string folderName)
{
object missing = System.Reflection.Missing.Value;
DataSet ds = new DataSet();
//create instance of Outlook application and Outlook Contacts folder.
try
{
OutLook.MAPIFolder fldContacts = null;
OutLook._Application outlookObj = new OutLook.Application();
if (folderName == "Default")
{
fldContacts = (OutLook.MAPIFolder)outlookObj.Session
.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
}
else
{
OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder)outlookObj.Session
.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
//VERIFYING THE CUSTOM FOLDER IN OUT LOOK .
foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders)
{
if (subFolder.Name == folderName)
{
fldContacts = subFolder;
break;
}
}
}
DataTable dt = new DataTable();
for (int i = 0; i < 12; i++)
{
dt.Columns.Add("Col" + i,Type.GetType ("System.String"));
}
foreach (Microsoft.Office.Interop.Outlook._ContactItem contactItem in fldContacts.Items)
{
{
DataRow dr = dt.NewRow();
dr[0] = Convert.ToString(contactItem.FirstName);
dr[1] = Convert.ToString(contactItem.LastName);
dr[2] = Convert.ToString(contactItem.MobileTelephoneNumber);
if (!string.IsNullOrEmpty(contactItem.Email1Address))
dr[3] = contactItem.Email1Address;
else
dr[3] = contactItem.Email2Address;
dr[4] = Convert.ToString(contactItem.HomeAddress);
dr[5] = Convert.ToString(contactItem.BusinessTelephoneNumber);
dr[6] = Convert.ToString(contactItem.HomeTelephoneNumber);
dr[7] = Convert.ToString(contactItem.CompanyName);
dr[8] = Convert.ToString(contactItem.Birthday);
dr[9] = Convert.ToString(contactItem.Anniversary);
dr[10] = Convert.ToString(contactItem.JobTitle);
dr[11] = Convert.ToString(contactItem.HomeFaxNumber);
dt.Rows.Add(dr);
}
}
ds.Tables.Add(dt);
}
catch (System.Exception ex)
{
Console.WriteLine(ex);
}
return ds;
}
Microsoft.Office.Interop.Outlook with version 9.2
Description
このためにdllを追加しました。Microsoft.Office 11.0 Object Library
Outlook 2007バージョンから連絡
先をインポートしますが、Outlook 2010から連絡先をインポートする場合、連絡先をインポートしていません。
この問題を解決するにはどうすればよいですか?