2017-01-06 4 views
1

このコードはhereであり、C#winformを使用してOutlook連絡先を検索しています。私は、なぜコードがそのまま動作していないのかを理解するのに苦労しています。 "Myapp"に 'Application'の定義が含まれておらず、 'Myapp'タイプの最初の引数を受け入れる拡張メソッド 'Application'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?) "WinFormを使用してOutlookで特定の連絡先をプログラムで検索する

private void FindContactEmailByName(string firstName, string lastName) 
    { 
     Outlook.NameSpace outlookNameSpace = this.Application.GetNamespace("MAPI"); //VS does not like this line, particularly "Application" 
     Outlook.MAPIFolder contactsFolder = 
      outlookNameSpace.GetDefaultFolder(
      Microsoft.Office.Interop.Outlook. 
      OlDefaultFolders.olFolderContacts); 
     Outlook.Items contactItems = contactsFolder.Items; 
     try 
     { 
      Outlook.ContactItem contact = 
       (Outlook.ContactItem)contactItems. 
       Find(String.Format("[FirstName]='{0}' and " 
       + "[LastName]='{1}'", firstName, lastName)); 
      if (contact != null) 
      { 
       contact.Display(true); 
      } 
      else 
      { 
       MessageBox.Show("The contact information was not found."); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

答えて

1

ラインOutlook.NameSpace outlookNameSpace = this.Application.GetNamespace("MAPI");
私に同じメッセージがスローされます。ここでは

は、コードがあります。
コードを修正してテストしました。

最初の2行のoutlookオブジェクトの宣言に注意してください。連絡先に私があなたの元のコードから、それを変更したフォルダを設定するために
outlook.GetNamespace("MAPI").GetDefaultFolder(MyOutlook.OlDefaultFolders.olFolderContacts);

using MyOutlook= Microsoft.Office.Interop.Outlook; 

    private void FindContactEmailByName(string firstName, string lastName) 
     { 
      Microsoft.Office.Interop.Outlook.Application outlook; 
      outlook = new Microsoft.Office.Interop.Outlook.Application(); 

      MyOutlook.MAPIFolder contactsFolder = 
      outlook.GetNamespace("MAPI").GetDefaultFolder(MyOutlook.OlDefaultFolders.olFolderContacts); 
      MyOutlook.Items contactItems = contactsFolder.Items; 
      try 
      { 
       MyOutlook.ContactItem contact = 
        (MyOutlook.ContactItem)contactItems. 
        Find(String.Format("[FirstName]='{0}' and " 
        + "[LastName]='{1}'", firstName, lastName)); 
       if (contact != null) 
       { 
        contact.Display(true); 
       } 
       else 
       { 
        MessageBox.Show("The contact information was not found."); 
       } 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 
+0

完璧なソリューション!なぜマイクロソフトのサイトが他の方法で投稿したのかわからない... – Pucho

+0

はい... 'this.Application.GetNamespace(" MAPI ")'は 'Form'オブジェクトに関するものであり、意味をなさない...また、そのコード例で何をしようとしているのか理解できません...とにかくうれしい私は助けることができます。 – jonathana

関連する問題