【VBA】Outlookの連絡先をExcelシートへ一括出力する方法!87項目まとめ!

Outlookの連絡先一覧をExcelへ一括出力したいときはないでしょうか。

そんなときに悩むことは、

・Outlookの連絡先一覧をExcelへ一括出力したいが方法がわからない
・VBAを使いOutlookの連絡先一覧をExcelへ一括出力したいが方法がわからない
・出力したい連絡先の項目の指定方法がわからない

ですね。

今回はOutlookの連絡先を確認する際に便利な

・登録されている連絡先一覧をExcelへ出力する方法
・入力項目87個をまとめて出力するVBA

についてまとめます。

連絡先一覧をExcelへ出力するイメージ

今回のOutlook連絡先出力VBAの実装先は、出力結果を書き込む先のExcelブック側となります。

Excelブック側からスクリプトを実行し以下の流れで処理が行われます。

Excelブック(VBA) → 連絡先ちょうだい → Outlook
Excelブック ← 連絡先一覧を出すよ ← Outlook

Excel側のVBAを実行すると、

Outlookの連絡先情報が

さくっとExcelのシートへ出力されます!

標準機能で連絡先を出力する

Outlookから連絡先を出力する方法は標準機能でも可能です。
Outlook上にて以下の順序で操作をするとcsvファイル形式で出力することができます。

「ファイル」>「開く/エクスポート」>「インポート/エクスポート」>「ファイルにエクスポート」>「コンマ区切り値」>「連絡先」>出力先を選択>ファイル名を入力>処理の確認>「OK」

タカヒロ
タカヒロ
作業のステップが多く使うには少々面倒そうですよね…

そこで今回ご紹介する方法なら、

  Excel起動してマクロ実行

これだけです!

こちらのほうがカンタンですね!

Outlookもいちいち起動する必要もありません!

では早速実装をして動かしてみましょう!

Excel VBAからOutlookを操作するための下準備

まずExcel VBAからOutlookを操作するための下準備をしていきます。

①Excelを起動し、「開発」タブをクリックします。

②VBEの画面が開いたら、メニューから「ツール」>「参照設定」を選択します。

③「Microsoft Outlook XX.X Object Library」を探してチェックボックスにチェックし「OK」をクリックします。

以上です。

VBAを実装する

続いてVBAを実装します。

今回VBAは以下の通りとなります。
なお、VBAはこちらを参考にし、日本語化したり、出力項目を変えたり、少しカスタマイズを行いました。

Sub Outlookの連絡先をインポートする()

    'Outlook用の定義
    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用の定義
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    
    Dim lnContactCount As Long
    
    Dim strDummy As String
    
    'スクリーンの更新は行われません。
    Application.ScreenUpdating = False
    
    'Excelのブックとワークシートのオブジェクトを設定します。
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets(1)
    
    '書き込み先のセルを指定します。また1行目にタイトルを記述します。
    With wsSheet
        .Range("A1").CurrentRegion.Clear
        .Cells(1, 1).Value = "CompanyName"
        .Cells(1, 2).Value = "Department"
        .Cells(1, 3).Value = "LastName"
        .Cells(1, 4).Value = "YomiLastName"
        .Cells(1, 5).Value = "FirstName"
        .Cells(1, 6).Value = "YomiFirstName"
        .Cells(1, 7).Value = "FullName"
        .Cells(1, 8).Value = "Email1Address"
        .Cells(1, 9).Value = "Email1DisplayName"
        .Cells(1, 10).Value = "MobileTelephoneNumber"

        With .Range("A1:Z1")
            .Font.Bold = True
            .Font.ColorIndex = 10
            .Font.Size = 11
        End With
    End With
    
    wsSheet.Activate
    
    'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)
    Set olConItems = olFolder.Items
            
    '取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。
    lnContactCount = 2
    
    For Each olItem In olConItems
        If TypeName(olItem) = "ContactItem" Then
            With olItem
                Cells(lnContactCount, 1).Value = .CompanyName
                Cells(lnContactCount, 2).Value = .Department
                Cells(lnContactCount, 3).Value = .LastName
                Cells(lnContactCount, 4).Value = .YomiLastName
                Cells(lnContactCount, 5).Value = .FirstName
                Cells(lnContactCount, 6).Value = .YomiFirstName
                Cells(lnContactCount, 7).Value = .FullName
                Cells(lnContactCount, 8).Value = .Email1Address
                Cells(lnContactCount, 9).Value = .Email1DisplayName
                Cells(lnContactCount, 10).Value = .MobileTelephoneNumber

            End With
            lnContactCount = lnContactCount + 1
        End If
    Next olItem
    
    'オブジェクトを解放します。
    Set olItem = Nothing
    Set olConItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
    
            
    'スクリーンの更新を有効にします。
    Application.ScreenUpdating = True
    
    MsgBox "Outlook連絡表の出力が完了しました!", vbInformation
    
End Sub

実装手順は以下の通りです。今回はExcel側にこのVBAを実装します。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のマクロを入力します。

こちらで完了です。

VBAを実行する

①「開発」タブの「マクロ」をクリックし「Outlookの連絡先をインポートする」を選択し、「実行」をクリックします。

②「Outlook連絡表の出力が完了しました!」が表示されたら完成です!

確認をしてみましょう。

はい、Outlook連絡表の内容がExcelシートへ出力されていますね!

VBAについて説明

連絡先の項目はContactItemというメンバーに格納されています。
コードではolItemオブジェクトのタイプ名が”ContactItem”だった場合に処理を進めるようにしています。

If TypeName(olItem) = “ContactItem” Then

また連絡先の項目はプロパティに格納されており、今回は以下の項目に絞っています。

会社名:.CompanyName
部署名:.Department
姓:.LastName
姓フリガナ:.YomiLastName
名:.FirstName
名フリガナ:.YomiFirstName
姓名:.FullName
メールアドレス:.Email1Address
メールアドレス表示名:.Email1DisplayName
携帯番号:.MobileTelephoneNumber

連絡先のすべて項目は以下となっていますので、必要に応じて取捨選択頂ければと思います。
例えば11番目の列に「Email2Address」を追加する場合は、

Cells(lnContactCount, 11).Value = .Email2Address

のようにしてください。

【参考】ContactItem メンバー プロパティ一覧

名前 説明
Account 連絡先のアカウントを表す文字列を設定または返します。読み取り/書き込み。
Actions アイテムの使用可能なすべてのアクションを表すActionsコレクションを取得します。読み取り専用です。
Anniversary 連絡先の記念日を示す日付を設定または返します。読み取り/書き込み。
Application Outlook のアプリケーション オブジェクトの親を表すApplicationオブジェクトを返します。読み取り専用です。
AssistantName 連絡先の秘書の担当者の名前を表す文字列を設定または返します。読み取り/書き込み。
AssistantTelephoneNumber 連絡先の秘書の担当者の電話番号を表す文字列を設定または返します。読み取り/書き込み。
Attachments 添付ファイル を指定した項目のすべての添付ファイルを表すオブジェクトを返します。読み取り専用です。
AutoResolvedWinner ブール値アイテムが自動競合解決の勝者であるかどうかを返します。読み取り専用です。
BillingInformation Outlook アイテムに関連付けられている請求先情報を表す文字列を設定または返します。読み取り/書き込み。
Birthday 連絡先の誕生日を示す日付を設定または返します。読み取り/書き込み。
Body Outlook アイテムのクリア テキストの本文を表す文字列を設定または返します。読み取り/書き込み。
Business2TelephoneNumber 連絡先の 2 番目の会社の電話番号を表す文字列を設定または返します。読み取り/書き込み。
BusinessAddress 連絡先の会社の住所全体のアドレスを表す文字列を設定または返します。読み取り/書き込み。
BusinessAddressCity 連絡先の会社の住所の市町村部分を表す文字列を設定または返します。読み取り/書き込み。
BusinessAddressCountry 連絡先の会社の住所の国/地域コードの部分を表す文字列を設定または返します。読み取り/書き込み。
BusinessAddressPostalCode 連絡先の会社の住所の郵便番号 (zip コード) の部分を表す文字列を設定または返します。読み取り/書き込み。
BusinessAddressPostOfficeBox 連絡先の勤務先住所の私書箱部分を表す文字列を設定または返します。読み取り/書き込み。
BusinessAddressState 連絡先の勤務先住所の都道府県部分を表す文字列を設定または返します。読み取り/書き込み。
BusinessAddressStreet 連絡先の勤務先住所の番地部分を表す文字列を設定または返します。読み取り/書き込み。
BusinessCardLayoutXml 返すまたは、電子ビジネス カードの読み取り/書き込みのレイアウト用の XML マークアップを表す文字列を設定します。
BusinessCardType 連絡先に使用する電子名刺の種類を指定する定数 OlBusinessCardType を返します。値の取得のみ可能です。
BusinessFaxNumber 連絡先の会社の fax 番号を表す文字列を設定または返します。読み取り/書き込み。
BusinessHomePage 連絡先の勤務先の Web ページの URL を表す文字列を設定または返します。読み取り/書き込み。
BusinessTelephoneNumber 連絡先の最初の会社の電話番号を表す文字列を設定または返します。読み取り/書き込み。
CallbackTelephoneNumber 連絡先のコールバック電話番号を表す文字列を設定または返します。読み取り/書き込み。
CarTelephoneNumber 連絡先の自動車電話の番号を表す文字列を設定または返します。読み取り/書き込み。
Categories Outlook アイテムに割り当てられているカテゴリを表す文字列を設定または返します。読み取り/書き込み。
Children 連絡先の子供の名前を表す文字列を設定または返します。読み取り/書き込み。
Class オブジェクトのクラスを示す OlObjectClass 定数を取得します。値の取得のみ可能です。
Companies Outlook アイテムに関連付けられている会社の名前を表す文字列を設定または返します。読み取り/書き込み。
CompanyAndFullName 会社名と連絡先の完全名を表す文字列を返します。読み取り専用です。
CompanyLastFirstNoSpace 後に姓、名、およびスペースを入れずに、ミドル ネーム、姓と名の間で連絡先の会社名を表す文字列を返します。読み取り専用です。
CompanyLastFirstSpaceOnly 後に姓、名、およびスペースのミドル ネーム、姓、およびミドル ネームの間で連絡先の会社名を表す文字列を返します。読み取り専用です。
CompanyMainTelephoneNumber 連絡先の会社の主要な電話番号を表す文字列を設定または返します。読み取り/書き込み。
CompanyName 連絡先の会社名を表す文字列を設定または返します。読み取り/書き込み。
ComputerNetworkName 連絡先のコンピューター ネットワークの名前を表す文字列を設定または返します。読み取り/書き込み。
Conflicts 任意の Outlook アイテム オブジェクトの競合に含まれる項目を表す競合オブジェクトを返します。 読み取り専用です。
ConversationID ContactItem オブジェクトが属している会話のオブジェクトを一意に識別する文字列を返します。読み取り専用です。
ConversationIndex テーマ スレッド内の項目の相対位置を示す文字列を返します。読み取り専用です。
ConversationTopic Outlook アイテムのテーマ スレッドのトピックを表す文字列を返します。読み取り専用です。
CreationTime Outlook アイテムの作成日時を示す日付を返します。読み取り専用です。
CustomerID 連絡先のカスタマー ID を表す文字列を設定または返します。読み取り/書き込み。
Department 取引先担当者の部署名を表す文字列を設定または返します。読み取り/書き込み。
DownloadState アイテムのダウンロードの状態を示すOlDownloadState列挙に属している定数を返します。読み取り専用です。
Email1Address 連絡先の最初の電子メール アドレスの電子メール アドレスを表す文字列を設定または返します。読み取り/書き込み。
Email1AddressType アドレスの種類を表す文字列を設定 (電子メールまたは SMTP) の連絡先の最初の電子メール アドレスの。 読み取り/書き込み。
Email1DisplayName 連絡先の最初の電子メール アドレスの表示名を表す文字列を返します。読み取り/書き込み。
Email1EntryID 連絡先の最初の電子メール アドレスのエントリ ID を表す文字列を返します。読み取り専用です。
Email2Address 連絡先の 2 番目の電子メール アドレスの電子メール アドレスを表す文字列を設定または返します。読み取り/書き込み。
Email2AddressType アドレスの種類を表す文字列を設定 (電子メールまたは SMTP) の連絡先の 2 番目の電子メール アドレスの。読み取り/書き込み。
Email2DisplayName 連絡先の 2 番目の電子メール アドレスの表示名を表す文字列を返します。読み取り/書き込み。
Email2EntryID 連絡先の 2 番目の電子メール アドレスのエントリ ID を表す文字列を返します。読み取り専用です。
Email3Address 連絡先の 3 番目の電子メール アドレスの電子メール アドレスを表す文字列を設定または返します。読み取り/書き込み。
Email3AddressType アドレスの種類を表す文字列を設定 (電子メールまたは SMTP) の連絡先の 3 番目の電子メール アドレスの。読み取り/書き込み。
Email3DisplayName 連絡先の 3 番目の電子メール アドレスの表示名を表す文字列を返します。 読み取り/書き込み。
Email3EntryID 連絡先の 3 番目の電子メール アドレスのエントリ ID を表す文字列を返します。読み取り専用です。
EntryID オブジェクトの一意のエントリ ID を表す文字列型 (String) の値を取得します。値の取得のみ可能です。
FileAs 保存時に、取引先担当者に割り当てられている既定のキーワード文字列を示す文字列を設定または返します。読み取り/書き込み。
FirstName 連絡先の名を表す文字列を設定または返します。読み取り/書き込み。
FormDescription 指定された Outlook アイテムのフォームの説明を表すFormDescriptionオブジェクトを返します。読み取り専用です。
FTPSite 連絡先の FTP サイト エントリを表す文字列を設定または返します。読み取り/書き込み。
FullName 連絡先の氏名全体を区切らずにそのままを指定する文字列を設定または返します。読み取り/書き込み。
FullNameAndCompany 氏名 と会社名のプロパティの値を連結することにより、完全な名前と連絡先の会社を表す文字列を返します。読み取り専用です。
Gender 連絡先の性別を示します。OlGender クラスの定数を使用します。値の取得および設定が可能です。
GetInspector 指定した項目を含むインスペクターを表すInspectorオブジェクトを取得します。読み取り専用です。
GovernmentIDNumber 連絡先の ID 番号を表す文字列を設定または返します。読み取り/書き込み。
HasPicture 連絡先アイテムに関連付けられている画像がある場合は、 true を指定するブール値を返します。読み取り専用
Hobby 連絡先の趣味を表す文字列を設定または返します。読み取り/書き込み。
Home2TelephoneNumber 連絡先の 2 つ目の自宅の電話番号を表す文字列を設定または返します。読み取り/書き込み。
HomeAddress 連絡先の自宅の住所全体を区切らずにそのままのテキストを表す文字列を設定または返します。読み取り/書き込み。
HomeAddressCity 連絡先の自宅の住所の市町村部分を表す文字列を設定または返します。読み取り/書き込み。
HomeAddressCountry 連絡先の自宅の住所の国/地域の部分を表す文字列を設定または返します。読み取り/書き込み。
HomeAddressPostalCode 連絡先の自宅の住所の郵便番号部分を表す文字列を設定または返します。読み取り/書き込み。
HomeAddressPostOfficeBox 取得または連絡先の自宅の住所の私書箱部分文字列を設定します。読み取り/書き込み。
HomeAddressState 連絡先の自宅の住所の都道府県部分を表す文字列を設定または返します。読み取り/書き込み。
HomeAddressStreet 連絡先の自宅の住所の番地部分を表す文字列を設定または返します。読み取り/書き込み。
HomeFaxNumber 連絡先の自宅のファックス番号を表す文字列を設定または返します。読み取り/書き込み。
HomeTelephoneNumber 連絡先の最初の自宅の電話番号を表す文字列を設定または返します。読み取り/書き込み。
IMAddress 返すまたは、連絡先のマイクロソフトのインスタント メッセンジャーのアドレスを表す文字列を設定します。読み取り/書き込み。
Importance OlImportance を Outlook アイテムの相対的な重要度レベルを示す、定数を設定または返します。読み取り/書き込み。
Initials 連絡先のイニシャルを表す文字列を設定または返します。読み取り/書き込み。
InternetFreeBusyAddress 連絡先の [詳細] タブで [アドレス] ボックスに対応する文字列を設定または返します。 読み取り/書き込み。
IsConflict ブール値項目が競合しているかを決定する値を返します。読み取り専用です。
ISDNNumber 連絡先の ISDN 番号を表す文字列を設定または返します。読み取り/書き込み。
IsMarkedAsTask ContactItem を仕事としてマークするかどうかを示すブール値を返します。読み取り専用です。
ItemProperties Outlook アイテムに関連付けられているすべての標準およびユーザー定義のプロパティを表す名前のコレクションを返します。読み取り専用です。
JobTitle 連絡先の役職を表す文字列を設定または返します。読み取り/書き込み。
Journal ブール値 true を設定する場合は、連絡先のトランザクションが仕訳入力を返します。読み取り/書き込み。
Language 返すまたは、連絡先がメッセージを書き込む先の言語を表す文字列を設定します。読み取り/書き込み。
LastFirstAndSuffix 最後の名、名、ミドル ネーム、および連絡先の敬称を表す文字列を返します。読み取り専用です。
LastFirstNoSpace 姓、名、姓と名の間にスペースを連絡先のミドル ネームを表す文字列を返します。読み取り専用です。
LastFirstNoSpaceAndSuffix 姓、名、およびスペースを含まないユーザーのサフィックスを含む文字列を返します。読み取り専用
LastFirstNoSpaceCompany 姓、名、姓と名の間にスペースを連絡先のミドル ネームを表す文字列を返します。読み取り専用です。
LastFirstSpaceOnly 姓、名、およびそれらの間のスペースを含む連絡先のミドル ネームを表す文字列を返します。読み取り専用です。
LastFirstSpaceOnlyCompany 姓、名、およびそれらの間のスペースを含む連絡先のミドル ネームを表す文字列を返します。読み取り専用です。
LastModificationTime Outlook アイテムが最後に変更されたときの日時を指定する日付の値を返します。 読み取り専用です。
LastName 連絡先の姓を表す文字列を設定または返します。読み取り/書き込み。
LastNameAndFirstName 連絡先の最初の名前と姓を表す文字列を返します。読み取り専用です。
MailingAddress 全体を区切らずにそのまま郵送先住所、連絡先を表す文字列を設定または返します。読み取り/書き込み。
MailingAddressCity 連絡先の郵送先住所の市町村部分を表す文字列を設定または返します。読み取り/書き込み。
MailingAddressCountry 連絡先の郵送先住所の国/地域コードの部分を表す文字列を設定または返します。読み取り/書き込み。
MailingAddressPostalCode 連絡先の郵送先住所の郵便番号 (zip コード) の部分を表す文字列を設定または返します。読み取り/書き込み。
MailingAddressPostOfficeBox 連絡先の郵送先住所の私書箱部分を表す文字列を設定または返します。読み取り/書き込み。
MailingAddressState 連絡先の郵送先住所の都道府県部分を表す文字列を設定または返します。読み取り/書き込み。
MailingAddressStreet 連絡先の郵送先住所の番地部分を表す文字列を設定または返します。読み取り/書き込み。
ManagerName 連絡先のマネージャー名を表す文字列を設定または返します。読み取り/書き込み。
MarkForDownload リモート ユーザーがそれを受信した後、アイテムのステータスを決定するOlRemoteStatusの定数を設定または返します。読み取り/書き込み。
MessageClass Outlook アイテムのメッセージ クラスを表す文字列を設定または返します。読み取り/書き込み。
MiddleName 連絡先のミドル ネームを表す文字列を設定または返します。読み取り/書き込み。
Mileage アイテムの経費情報を表す文字列を設定または返します。読み取り/書き込み。
MobileTelephoneNumber 連絡先の携帯電話の番号を表す文字列を設定または返します。読み取り/書き込み。
NetMeetingAlias ユーザーの Microsoft NetMeeting ID またはエイリアスを示す文字列を設定または返します。読み取り/書き込み。
NetMeetingServer オンライン会議に使用されている Microsoft NetMeeting サーバーの名前を指定する文字列を設定または返します。読み取り/書き込み。
NickName 連絡先のニックネームを表す文字列を設定または返します。読み取り/書き込み。
NoAging 取得または Outlook のアイテムがない時代にTrueとなるブール値を設定します。読み取り/書き込み。
OfficeLocation 連絡先の特定のオフィスの場所 (たとえば、地またはスイート 123) を指定する文字列を設定または返します。読み取り/書き込み。
OrganizationalIDNumber 連絡先の組織の ID 番号を表す文字列を設定または返します。読み取り/書き込み。
OtherAddress 連絡先の他のアドレスを表す文字列を設定または返します。読み取り/書き込み。
OtherAddressCity 連絡先の他の住所の市町村部分を表す文字列を設定または返します。読み取り/書き込み。
OtherAddressCountry 連絡先の他の住所の国/地域の部分を表す文字列を設定または返します。読み取り/書き込み。
OtherAddressPostalCode 連絡先の他の住所の郵便番号部分を表す文字列を設定または返します。読み取り/書き込み。
OtherAddressPostOfficeBox 連絡先の他の住所の私書箱部分を表す文字列を設定または返します。読み取り/書き込み。
OtherAddressState 連絡先の他の住所の都道府県部分を表す文字列を設定または返します。読み取り/書き込み。
OtherAddressStreet 連絡先の他の住所の番地の部分を表す文字列を設定または返します。読み取り/書き込み。
OtherFaxNumber 連絡先の他の fax 番号を表す文字列を設定または返します。読み取り/書き込み。
OtherTelephoneNumber 連絡先の他の電話番号を表す文字列を設定または返します。読み取り/書き込み。
OutlookInternalVersion 長いOutlook アイテムを Outlook アプリケーションのビルド番号を表す値を返します。読み取り専用です。
OutlookVersion Outlook アイテム用の Outlook アプリケーションのメジャー バージョンとマイナー バージョン番号を示す文字列を返します。読み取り専用です。
PagerNumber 連絡先のポケットベルの番号を表す文字列を設定または返します。読み取り/書き込み。
Parent 指定されたオブジェクトの親 Object を取得します。値の取得のみ可能です。
PersonalHomePage 連絡先の個人用 Web ページの URL を表す文字列を設定または返します。読み取り/書き込み。
PrimaryTelephoneNumber 連絡先の主な電話番号を指定する文字列を設定または返します。読み取り/書き込み。
Profession 連絡先の職業を示す文字列を設定または返します。読み取り/書き込み。
PropertyAccessor 作成、取得、設定、および親ContactItemオブジェクトのプロパティを削除するをサポートするPropertyAccessorオブジェクトを返します。読み取り専用です。
RadioTelephoneNumber 連絡先の無線電話の番号を示す文字列を設定または返します。読み取り/書き込み。
ReferredBy 連絡先の参照名エントリを指定する文字列を設定または返します。読み取り/書き込み。
ReminderOverrideDefault 返すまたは、アラームは、アイテムの既定のアラーム設定をオーバーライドする場合にTrueとなるブール値を設定します。読み取り/書き込み。
ReminderPlaySound 取得または設定の場合は、アラームはこの項目の発生時にサウンドを再生する必要がありますが、 Trueとなるブール値です。読み取り/書き込み。
ReminderSet 返すまたは、このアイテムのアラームが設定されている場合は、 true を指定するブール値を設定します。読み取り/書き込み。
ReminderSoundFile Outlook アイテムのアラームが発生したときに再生するサウンド ファイルのパスとファイル名を示す文字列を設定または返します。読み取り/書き込み。
ReminderTime 指定したアイテムについてアラームが発生する日時を示す日付を設定または返します。読み取り/書き込み。
RTFBody 設定の本体を表すバイト配列を取得または設定しますMicrosoft Outlookリッチ テキスト形式の項目です。読み取り/書き込み。
Saved Outlook アイテムが最後の保存以降変更されていない場合は、 true を指定するブール値を返します。読み取り専用です。
SelectedMailingAddress 連絡先の郵送先住所の種類を示す OlMailingAddress クラスの定数を設定します。値の取得および設定が可能です。
Sensitivity Outlook アイテムの秘密度を示すOlSensitivity列挙の定数を設定または返します。読み取り/書き込み。
Session 現在のセッションの名前空間のオブジェクトを返します。読み取り専用です。
Size 長(バイト) のサイズ、Outlook アイテムを示す値を返します。読み取り専用です。
Spouse 名前のエントリを連絡先の配偶者またはパートナーを示す文字列を設定または返します。読み取り/書き込み。
Subject Outlook アイテムの件名を示す文字列を設定または返します。読み取り/書き込み。
Suffix 指定した連絡先の名前のサフィックス (jr.、III、博士など) を示す文字列を設定または返します。読み取り/書き込み。
TaskCompletedDate このContactItemの仕事の終了日を表す日付値を設定を取得または取得します。読み取り/書き込み。
TaskDueDate このContactItemの仕事の期限を表す日付値を設定を取得または取得します。読み取り/書き込み。
TaskStartDate このContactItemオブジェクトのタスクの開始日を表す日付値を設定を取得または取得します。読み取り/書き込み。
TaskSubject ContactItem オブジェクトの仕事の件名を表す文字列値に設定を取得または取得します。読み取り/書き込み。
TelexNumber 連絡先のテレックス番号を示す文字列を設定または返します。読み取り/書き込み。
Title 連絡先の肩書きを示す文字列を設定または返します。読み取り/書き込み。
ToDoTaskOrdinal ContactItem の仕事の序数を表す日付値を設定を取得または取得します。読み取り/書き込み。
TTYTDDTelephoneNumber 連絡先の TTY/TDD 電話番号を指定する文字列を設定または返します。読み取り/書き込み。
UnRead 返すまたは、アイテムがされていません。 Outlook には、(読み取り) が開かれている場合は、 true を指定するブール値を設定します。読み取り/書き込み。
User1 多目的連絡先の連絡先フォームの最初のフィールドを指定する文字列を設定または返します。読み取り/書き込み。
User2 多目的連絡先の連絡先フォームの 2 番目のフィールドを指定する文字列を設定または返します。読み取り/書き込み。
User3 多目的連絡先の連絡先フォームの 3 番目のフィールドを指定する文字列を設定または返します。読み取り/書き込み。
User4 多目的連絡先の連絡先フォームの 4 番目のフィールドを指定する文字列を設定または返します。読み取り/書き込み。
UserProperties Outlook アイテムのすべてのユーザー プロパティを[ユーザー プロパティ]コレクションを返します。読み取り専用です。
WebPage 連絡先の Web ページの URL を示す文字列を設定または返します。読み取り/書き込み。
YomiCompanyName 連絡先の会社名のふりがな (型) を示す文字列を設定または返します。読み取り/書き込み。
YomiFirstName ふりがな (型) の最初の連絡先の名前を示す文字列を設定または返します。読み取り/書き込み。
YomiLastName 連絡先の姓のふりがな (型) を示す文字列を設定または返します。読み取り/書き込み。

<追加>連絡先の「全般」と「詳細」に入力した87項目の情報をまとめて出力する

次に、連絡先の「全般」と「詳細」に入力した87項目の情報をまとめて出力するようにしていきます。

「全般」

「詳細」

タカヒロ
タカヒロ
項目数が多いので、必要に応じて絞り込んでいただければと思います。

サンプルコードは以下の通りです。

Sub Outlookの連絡先を取得する_項目追加版()

    'Outlook用の定義
    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用の定義
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    
    Dim lnContactCount As Long
    
    Dim strDummy As String
    
    'スクリーンの更新は行われません。
    Application.ScreenUpdating = False
    
    'Excelのブックとワークシートのオブジェクトを設定します。
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets(1)
    
    '書き込み先のセルを指定します。また1行目にタイトルを記述します。
    With wsSheet
    
        '「全般」の項目名をセットします。
        .Cells(1, 1).Value = "Body"
        .Cells(1, 2).Value = "BusinessAddress"
        .Cells(1, 3).Value = "BusinessAddressCity"
        .Cells(1, 4).Value = "BusinessAddressCountry"
        .Cells(1, 5).Value = "BusinessAddressPostalCode"
        .Cells(1, 6).Value = "BusinessAddressState"
        .Cells(1, 7).Value = "BusinessAddressStreet"
        .Cells(1, 8).Value = "BusinessFaxNumber"
        .Cells(1, 9).Value = "BusinessHomePage"
        .Cells(1, 10).Value = "BusinessTelephoneNumber"
        .Cells(1, 11).Value = "CompanyAndFullName"
        .Cells(1, 12).Value = "CompanyName"
        .Cells(1, 13).Value = "ConversationTopic"
        .Cells(1, 14).Value = "CreationTime"
        .Cells(1, 15).Value = "Department"
        .Cells(1, 16).Value = "Email1Address"
        .Cells(1, 17).Value = "Email1AddressType"
        .Cells(1, 18).Value = "Email1DisplayName"
        .Cells(1, 19).Value = "Email1EntryID"
        .Cells(1, 20).Value = "Email2Address"
        .Cells(1, 21).Value = "Email2AddressType"
        .Cells(1, 22).Value = "Email2DisplayName"
        .Cells(1, 23).Value = "Email2EntryID"
        .Cells(1, 24).Value = "Email3Address"
        .Cells(1, 25).Value = "Email3AddressType"
        .Cells(1, 26).Value = "Email3DisplayName"
        .Cells(1, 27).Value = "Email3EntryID"
        .Cells(1, 28).Value = "EntryID"
        .Cells(1, 29).Value = "FileAs"
        .Cells(1, 30).Value = "FirstName"
        .Cells(1, 31).Value = "FullNameAndCompany"
        .Cells(1, 32).Value = "GetInspector"
        .Cells(1, 33).Value = "HasPicture"
        .Cells(1, 34).Value = "Hobby"
        .Cells(1, 35).Value = "Home2TelephoneNumber"
        .Cells(1, 36).Value = "HomeAddress"
        .Cells(1, 37).Value = "HomeAddressCity"
        .Cells(1, 38).Value = "HomeAddressCountry"
        .Cells(1, 39).Value = "HomeAddressPostalCode"
        .Cells(1, 40).Value = "HomeAddressPostOfficeBox"
        .Cells(1, 41).Value = "HomeAddressState"
        .Cells(1, 42).Value = "HomeAddressStreet"
        .Cells(1, 43).Value = "HomeFaxNumber"
        .Cells(1, 44).Value = "HomeTelephoneNumber"
        .Cells(1, 45).Value = "IMAddress"
        .Cells(1, 46).Value = "JobTitle"
        .Cells(1, 47).Value = "LastModificationTime"
        .Cells(1, 48).Value = "LastName"
        .Cells(1, 49).Value = "LastNameAndFirstName"
        .Cells(1, 50).Value = "MailingAddress"
        .Cells(1, 51).Value = "MailingAddressCity"
        .Cells(1, 52).Value = "MailingAddressCountry"
        .Cells(1, 53).Value = "MailingAddressPostalCode"
        .Cells(1, 54).Value = "MailingAddressState"
        .Cells(1, 55).Value = "MailingAddressStreet"
        .Cells(1, 56).Value = "MobileTelephoneNumber"
        .Cells(1, 57).Value = "NoAging"
        .Cells(1, 58).Value = "OrganizationalIDNumber"
        .Cells(1, 59).Value = "OtherAddress"
        .Cells(1, 60).Value = "OtherAddressCity"
        .Cells(1, 61).Value = "OtherAddressCountry"
        .Cells(1, 62).Value = "OtherAddressPostalCode"
        .Cells(1, 63).Value = "OtherAddressPostOfficeBox"
        .Cells(1, 64).Value = "OtherAddressState"
        .Cells(1, 65).Value = "OtherAddressStreet"
        .Cells(1, 66).Value = "OtherFaxNumber"
        .Cells(1, 67).Value = "OtherTelephoneNumber"
        .Cells(1, 68).Value = "Parent"
        .Cells(1, 69).Value = "PropertyAccessor"
        .Cells(1, 70).Value = "WebPage"
        .Cells(1, 71).Value = "YomiCompanyName"
        .Cells(1, 72).Value = "YomiFirstName"
        .Cells(1, 73).Value = "YomiLastName"
        
        '「詳細」の項目名をセットします。
        .Cells(1, 74).Value = "Anniversary"
        .Cells(1, 75).Value = "AssistantName"
        .Cells(1, 76).Value = "Birthday"
        .Cells(1, 77).Value = "FullName"
        .Cells(1, 78).Value = "InternetFreeBusyAddress"
        .Cells(1, 79).Value = "ManagerName"
        .Cells(1, 80).Value = "NickName"
        .Cells(1, 81).Value = "OfficeLocation"
        .Cells(1, 82).Value = "Profession"
        .Cells(1, 83).Value = "Spouse"
        .Cells(1, 84).Value = "Subject"
        .Cells(1, 85).Value = "Suffix"
        .Cells(1, 86).Value = "TaskSubject"
        .Cells(1, 87).Value = "Title"

        With .Range("A1:ZZ1")
            .Font.Bold = True
            .Font.ColorIndex = 10
            .Font.Size = 11
        End With
    End With
    
    wsSheet.Activate
    
    'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)
    Set olConItems = olFolder.Items
            
    '取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。
    lnContactCount = 2
    
    For Each olItem In olConItems
        If TypeName(olItem) = "ContactItem" Then
            With olItem
            
                '「全般」の入力項目を出力します。
                Cells(lnContactCount, 1).Value = .Body
                Cells(lnContactCount, 2).Value = .BusinessAddress
                Cells(lnContactCount, 3).Value = .BusinessAddressCity
                Cells(lnContactCount, 4).Value = .BusinessAddressCountry
                Cells(lnContactCount, 5).Value = .BusinessAddressPostalCode
                Cells(lnContactCount, 6).Value = .BusinessAddressState
                Cells(lnContactCount, 7).Value = .BusinessAddressStreet
                Cells(lnContactCount, 8).Value = .BusinessFaxNumber
                Cells(lnContactCount, 9).Value = .BusinessHomePage
                Cells(lnContactCount, 10).Value = .BusinessTelephoneNumber
                Cells(lnContactCount, 11).Value = .CompanyAndFullName
                Cells(lnContactCount, 12).Value = .CompanyName
                Cells(lnContactCount, 13).Value = .ConversationTopic
                Cells(lnContactCount, 14).Value = .CreationTime
                Cells(lnContactCount, 15).Value = .Department
                Cells(lnContactCount, 16).Value = .Email1Address
                Cells(lnContactCount, 17).Value = .Email1AddressType
                Cells(lnContactCount, 18).Value = .Email1DisplayName
                Cells(lnContactCount, 19).Value = .Email1EntryID
                Cells(lnContactCount, 20).Value = .Email2Address
                Cells(lnContactCount, 21).Value = .Email2AddressType
                Cells(lnContactCount, 22).Value = .Email2DisplayName
                Cells(lnContactCount, 23).Value = .Email2EntryID
                Cells(lnContactCount, 24).Value = .Email3Address
                Cells(lnContactCount, 25).Value = .Email3AddressType
                Cells(lnContactCount, 26).Value = .Email3DisplayName
                Cells(lnContactCount, 27).Value = .Email3EntryID
                Cells(lnContactCount, 28).Value = .EntryID
                Cells(lnContactCount, 29).Value = .FileAs
                Cells(lnContactCount, 30).Value = .FirstName
                Cells(lnContactCount, 31).Value = .FullNameAndCompany
                Cells(lnContactCount, 32).Value = .GetInspector
                Cells(lnContactCount, 33).Value = .HasPicture
                Cells(lnContactCount, 34).Value = .Hobby
                Cells(lnContactCount, 35).Value = .Home2TelephoneNumber
                Cells(lnContactCount, 36).Value = .HomeAddress
                Cells(lnContactCount, 37).Value = .HomeAddressCity
                Cells(lnContactCount, 38).Value = .HomeAddressCountry
                Cells(lnContactCount, 39).Value = .HomeAddressPostalCode
                Cells(lnContactCount, 40).Value = .HomeAddressPostOfficeBox
                Cells(lnContactCount, 41).Value = .HomeAddressState
                Cells(lnContactCount, 42).Value = .HomeAddressStreet
                Cells(lnContactCount, 43).Value = .HomeFaxNumber
                Cells(lnContactCount, 44).Value = .HomeTelephoneNumber
                Cells(lnContactCount, 45).Value = .IMAddress
                Cells(lnContactCount, 46).Value = .JobTitle
                Cells(lnContactCount, 47).Value = .LastModificationTime
                Cells(lnContactCount, 48).Value = .LastName
                Cells(lnContactCount, 49).Value = .LastNameAndFirstName
                Cells(lnContactCount, 50).Value = .MailingAddress
                Cells(lnContactCount, 51).Value = .MailingAddressCity
                Cells(lnContactCount, 52).Value = .MailingAddressCountry
                Cells(lnContactCount, 53).Value = .MailingAddressPostalCode
                Cells(lnContactCount, 54).Value = .MailingAddressState
                Cells(lnContactCount, 55).Value = .MailingAddressStreet
                Cells(lnContactCount, 56).Value = .MobileTelephoneNumber
                Cells(lnContactCount, 57).Value = .NoAging
                Cells(lnContactCount, 58).Value = .OrganizationalIDNumber
                Cells(lnContactCount, 59).Value = .OtherAddress
                Cells(lnContactCount, 60).Value = .OtherAddressCity
                Cells(lnContactCount, 61).Value = .OtherAddressCountry
                Cells(lnContactCount, 62).Value = .OtherAddressPostalCode
                Cells(lnContactCount, 63).Value = .OtherAddressPostOfficeBox
                Cells(lnContactCount, 64).Value = .OtherAddressState
                Cells(lnContactCount, 65).Value = .OtherAddressStreet
                Cells(lnContactCount, 66).Value = .OtherFaxNumber
                Cells(lnContactCount, 67).Value = .OtherTelephoneNumber
                Cells(lnContactCount, 68).Value = .Parent
                Cells(lnContactCount, 69).Value = .PropertyAccessor
                Cells(lnContactCount, 70).Value = .WebPage
                Cells(lnContactCount, 71).Value = .YomiCompanyName
                Cells(lnContactCount, 72).Value = .YomiFirstName
                Cells(lnContactCount, 73).Value = .YomiLastName

                '「詳細」の入力項目を出力します。
                Cells(lnContactCount, 74).Value = .Anniversary
                Cells(lnContactCount, 75).Value = .AssistantName
                Cells(lnContactCount, 76).Value = .Birthday
                Cells(lnContactCount, 77).Value = .FullName
                Cells(lnContactCount, 78).Value = .InternetFreeBusyAddress
                Cells(lnContactCount, 79).Value = .ManagerName
                Cells(lnContactCount, 80).Value = .NickName
                Cells(lnContactCount, 81).Value = .OfficeLocation
                Cells(lnContactCount, 82).Value = .Profession
                Cells(lnContactCount, 83).Value = .Spouse
                Cells(lnContactCount, 84).Value = .Subject
                Cells(lnContactCount, 85).Value = .Suffix
                Cells(lnContactCount, 86).Value = .TaskSubject
                Cells(lnContactCount, 87).Value = .Title

            End With
            lnContactCount = lnContactCount + 1
        End If
    Next olItem
    
    'オブジェクトを解放します。
    Set olItem = Nothing
    Set olConItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
    
    'スクリーンの更新を有効にします。
    Application.ScreenUpdating = True
    
    MsgBox "Outlook連絡先の取得が完了しました!", vbInformation
    
End Sub

VBAを実行してみましょう。

はい、全部取りができていますね!

「全般」

項目名 入力例 説明
Body 追加太郎のメモです。 メモ項目の本文
BusinessAddress 102-0072

東京都千代田区飯田橋**-1

連絡先の会社の住所全体のアドレス
BusinessAddressCity 千代田区飯田橋 連絡先の会社の住所の市町村部分
BusinessAddressCountry 日本 連絡先の会社の住所の国/地域コードの部分
BusinessAddressPostalCode 102-0072 連絡先の会社の住所の郵便番号 (zip コード) の部分
BusinessAddressState 東京都 連絡先の勤務先住所の都道府県部分
BusinessAddressStreet **-1 連絡先の勤務先住所の番地部分
BusinessFaxNumber 03-0000-0001 連絡先の会社の fax 番号
BusinessHomePage https://extan.jp/ 連絡先の勤務先の Web ページの URL
BusinessTelephoneNumber 03-0000-0000 連絡先の最初の会社の電話番号を表す
CompanyAndFullName 〇〇株式会社

追加, 太郎

会社名と連絡先の完全名
CompanyName 〇〇株式会社 連絡先の会社名
ConversationTopic 追加 Outlook アイテムのテーマ スレッドのトピック
CreationTime 44487.00306 Outlook アイテムの作成日時
Department 第一営業部 取引先担当者の部署名
Email1Address moto1@extan.jp 連絡先の最初の電子メール アドレスの電子メール アドレス
Email1AddressType SMTP アドレスの種類
Email1DisplayName 追加太郎のアドレス 連絡先の最初の電子メール アドレスの表示名
Email1EntryID 連絡先の最初の電子メール アドレスのエントリ ID
Email2Address 連絡先の 2 番目の電子メール アドレスの電子メール アドレス
Email2AddressType アドレスの種類
Email2DisplayName 連絡先の 2 番目の電子メール アドレスの表示名
Email2EntryID 連絡先の 2 番目の電子メール アドレスのエントリ ID
Email3Address 連絡先の 3 番目の電子メール アドレスの電子メール アドレス
Email3AddressType アドレスの種類
Email3DisplayName 連絡先の 3 番目の電子メール アドレスの表示名
Email3EntryID 連絡先の 3 番目の電子メール アドレスのエントリ ID
EntryID 000000003D614B2A38ADDF4F*** オブジェクトの一意のエントリ ID
FileAs 追加, 太郎 取引先担当者に割り当てられている既定のキーワード文字列を示す文字列
FirstName 太郎 連絡先の名
FullNameAndCompany 追加, 太郎

〇〇株式会社

名前と連絡先の会社
GetInspector 追加, 太郎 指定した項目を含むインスペクターを表すInspectorオブジェクト
HasPicture TRUE 画像がある場合はtrueを返す
Hobby 連絡先の趣味
Home2TelephoneNumber 連絡先の2つ目の自宅の電話番号
HomeAddress 192-0000

東京都八王子市**-2

連絡先の自宅の住所全体テキスト
HomeAddressCity 八王子市 連絡先の自宅の住所の市町村部分
HomeAddressCountry 日本 連絡先の自宅の住所の国/地域の部分
HomeAddressPostalCode 192-0000 連絡先の自宅の住所の郵便番号部分
HomeAddressPostOfficeBox 自宅の住所の私書箱部分文字列
HomeAddressState 東京都 自宅の住所の都道府県部分
HomeAddressStreet **-2 自宅の住所の番地部分
HomeFaxNumber 自宅のファックス番号
HomeTelephoneNumber 042-000-0000 最初の自宅の電話番号
IMAddress IM マイクロソフトのインスタント メッセンジャーのアドレス
JobTitle 次長 連絡先の役職
LastModificationTime 44498.45869 Outlook アイテムが最後に変更されたときの日時
LastName 追加 連絡先の姓
LastNameAndFirstName 追加, 太郎 連絡先の最初の名前と姓
MailingAddress 192-0000

東京都八王子市**-2

郵送先住所、連絡先
MailingAddressCity 八王子市 連絡先の郵送先住所の市町村部分
MailingAddressCountry 日本 連絡先の郵送先住所の国/地域コードの部分
MailingAddressPostalCode 192-0000 連絡先の郵送先住所の郵便番号 (zip コード) の部分
MailingAddressState 東京都 連絡先の郵送先住所の都道府県部分
MailingAddressStreet **-2 連絡先の郵送先住所の番地部分
MobileTelephoneNumber 080-000-0000 連絡先の携帯電話の番号
NoAging FALSE Outlook のアイテムがない時にTrue
OrganizationalIDNumber 連絡先の組織のID 番号
OtherAddress 連絡先の他のアドレス
OtherAddressCity 連絡先の他の住所の市町村部分
OtherAddressCountry 連絡先の他の住所の国/地域の部分
OtherAddressPostalCode 連絡先の他の住所の郵便番号部分
OtherAddressPostOfficeBox 連絡先の他の住所の私書箱部分
OtherAddressState 連絡先の他の住所の都道府県部分
OtherAddressStreet 連絡先の他の住所の番地の部分
OtherFaxNumber 連絡先の他の fax 番号
OtherTelephoneNumber 連絡先の他の電話番号
Parent 追加連絡先フォルダ 指定されたオブジェクトの親Object を取得
PropertyAccessor 追加, 太郎 作成、取得、設定、および親ContactItemオブジェクトのプロパティ
WebPage https://extan.jp/ 連絡先の Web ページの URL を示す文字列
YomiCompanyName マルマルカブシキガイシャ 連絡先の会社名のふりがな (型) を示す文字列
YomiFirstName タロウ ふりがな (型) の最初の連絡先の名前を示す文字列
YomiLastName ツイカ 連絡先の姓のふりがな (型) を示す文字列

「詳細」

項目名 入力例 説明
Anniversary 43728 連絡先の記念日を示す日付
AssistantName 〇〇秘書 連絡先の秘書の担当者の名前
Birthday 36795 連絡先の誕生日を示す日付
FullName Mr. 追加 太郎 殿 連絡先の氏名全体を区切らずにそのままを指定する文字列
InternetFreeBusyAddress http://空き時間情報アドレス 連絡先の [詳細] タブで [アドレス] ボックスに対応する文字列
ManagerName 〇〇部長 連絡先のマネージャー名
NickName ニックネーム 連絡先のニックネーム
OfficeLocation DX推進課 連絡先の特定のオフィスの場所 (たとえば、地またはスイート 123) を指定する文字列
Profession システム営業 連絡先の職業を示す文字列
Spouse 妻〇〇 名前のエントリを連絡先の配偶者またはパートナーを示す文字列
Subject 太郎 追加 殿 Outlook アイテムの件名を示す文字列
Suffix 殿 指定した連絡先の名前のサフィックス (jr.、III、博士など) を示す文字列
TaskSubject 太郎 追加 殿 ContactItem オブジェクトの仕事の件名
Title Mr. 連絡先の肩書きを示す文字列

<追加>連絡先へ追加したフォルダの連絡先情報を出力する

読者の方より連絡先へ追加したフォルダの連絡先情報を出力する方法はないか要望がありましたので、追記致します。

変更箇所は1か所のみです。

olNamespace.GetDefaultFolder(olFolderContacts)

.Folders(“<追加連絡先フォルダ名>”)

を追加します。

例えば連絡先のフォルダ名が「追加連絡先フォルダ」である場合は、

 Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts).Folders(“追加連絡先フォルダ”)

となります。

<追加>複数のフォルダの連絡先情報をまとめて出力する

読者の方より複数のフォルダの連絡先情報をまとめて出力する方法はないか要望がありましたので、追記致します。

タカヒロ
タカヒロ
例えば、連絡先ビューに
・追加フォルダ1
連絡先アイテム1-1
・追加フォルダ2
連絡先アイテム2-1
とあり、
・連絡先アイテム1-1
・連絡先アイテム2-1
を取得したい場合ですね。

ソースコードの以下の箇所を変更します。

■変更前

For Each olItem In olConItems
If TypeName(olItem) = “ContactItem” Then
With olItem
Cells(lnContactCount, 1).Value = .CompanyName


End With
lnContactCount = lnContactCount + 1
End If
Next olItem

■変更後

For Each olFolder In olNamespace.GetDefaultFolder(olFolderContacts).Folders
Set olConItems = olFolder.Items
For Each olItem In olConItems
If TypeName(olItem) = “ContactItem” Then
With olItem
Cells(lnContactCount, 1).Value = .CompanyName


End With
lnContactCount = lnContactCount + 1
End If
Next olItem
Next olFolder

For EachでFoldersコレクションの要素を繰り返し取得しています。

For Each olFolder In olNamespace.GetDefaultFolder(olFolderContacts).Folders

各フォルダ名も併せて出力したい場合は、

Cells(lnContactCount, 16).Value = olFolder.Name

を付け加えてください。
Cells16番目の列であるP列にフォルダ名が出力されます。

タカヒロ
タカヒロ
この方法はFoldersコレクションに含まれるデフォルトのフォルダも対象となり、
キャッシュ情報やデフォルトの連絡先アイテムなども出力されますので、
Excel側で不要なデータがあれば削除するようお願い致します。

さいごに

いかがでしょうか。

今回は

・登録されている連絡先一覧をExcelへ出力する方法
・入力項目87個をまとめて出力するVBA

についてまとめました。

普段よく使う連絡先だからこそ管理をカンタンにしてミスがないようにしたいですね。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








40 件のコメント

  • いつも、ありがとうございます。
    文字数の他改行の数の制限の
    詳細についてはMicrosoftのサポートページ確認しました。
    改行の数 vbCr  vbLf vbCrLf もセル制限内でした。
    BODYが400バイトでしたのでこの制限でしょうか。

    • ご連絡ありがとうございます。

      全角文字の場合1文字で2バイトですので、その可能性は低いと思われます。
      他の要因かもしれませんが、現時点ではわかりかねますことご了承願います。

  • 拝見しました。
    本文からエクセルにmySubfolder.Items.Bodyを利用した場合
    全文を転送できません。文字数制限があるのでしょうか?
    ご教示くだされば幸甚です。

  • 記事を読ませていただきました。
    Excelに記載のOutlookのアドレスリストから部署名などを出力することは可能でしょうか?

  • 回答ありがとうございました。
    無事に特定ユーザーのみ実行する事ができました。

    前回からお話ししているアカウントの件と
    同じになってしまうかもしれませんが、
    現在は個人用の連絡先から出力していますが
    共有の連絡先にあるアドレス帳を出力する事は可能でしょうか。

    よろしくお願いいたします。

    • 特定ユーザーのみ実行する件について実装できたようで良かったです。

      共有の連絡先にあるアドレス帳を出力する件について、
      対象アドレスが参加しているドメイン内であることが前提となりますが、
      記事内のコードを以下のように変更頂ければ可能となります。

      ■変更前
      Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)

      ■変更後
      Set recOther = olNamespace.CreateRecipient(“<アドレスを指定>”)
      Set olFolder = olNamespace.GetSharedDefaultFolder(recOther, olFolderContacts)

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です