Outlookの連絡先一覧をExcelへ一括出力したいときはないでしょうか。
そんなときに悩むことは、
・VBAを使いOutlookの連絡先一覧をExcelへ一括出力したいが方法がわからない
・出力したい連絡先の項目の指定方法がわからない
ですね。
今回はOutlookの連絡先を確認する際に便利な
・入力項目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”だった場合に処理を進めるようにしています。
また連絡先の項目はプロパティに格納されており、今回は以下の項目に絞っています。
部署名:.Department
姓:.LastName
姓フリガナ:.YomiLastName
名:.FirstName
名フリガナ:.YomiFirstName
姓名:.FullName
メールアドレス:.Email1Address
メールアドレス表示名:.Email1DisplayName
携帯番号:.MobileTelephoneNumber
連絡先のすべて項目は以下となっていますので、必要に応じて取捨選択頂ければと思います。
例えば11番目の列に「Email2Address」を追加する場合は、
のようにしてください。
名前 | 説明 |
---|---|
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か所のみです。
に
を追加します。
例えば連絡先のフォルダ名が「追加連絡先フォルダ」である場合は、
となります。
<追加>複数のフォルダの連絡先情報をまとめて出力する
読者の方より複数のフォルダの連絡先情報をまとめて出力する方法はないか要望がありましたので、追記致します。
・追加フォルダ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列にフォルダ名が出力されます。
キャッシュ情報やデフォルトの連絡先アイテムなども出力されますので、
Excel側で不要なデータがあれば削除するようお願い致します。
さいごに
いかがでしょうか。
今回は
・入力項目87個をまとめて出力するVBA
についてまとめました。
普段よく使う連絡先だからこそ管理をカンタンにしてミスがないようにしたいですね。
いつも、ありがとうございます。
文字数の他改行の数の制限の
詳細についてはMicrosoftのサポートページ確認しました。
改行の数 vbCr vbLf vbCrLf もセル制限内でした。
BODYが400バイトでしたのでこの制限でしょうか。
ご連絡ありがとうございます。
全角文字の場合1文字で2バイトですので、その可能性は低いと思われます。
他の要因かもしれませんが、現時点ではわかりかねますことご了承願います。
拝見しました。
本文からエクセルにmySubfolder.Items.Bodyを利用した場合
全文を転送できません。文字数制限があるのでしょうか?
ご教示くだされば幸甚です。
いつもご利用ありがとうございます。
Bodyプロパティの全文をExcelセルに転送できない件につきまして、セルの制限にかかってしまっている可能性があります。
文字数の他改行の数の制限があります。
詳細についてはMicrosoftのサポートページをご参照頂きたくお願いいたします。
https://support.microsoft.com/ja-jp/office/excel-%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%A8%E5%88%B6%E9%99%90-1672b34d-7043-467e-8e27-269d656771c3
記事を読ませていただきました。
Excelに記載のOutlookのアドレスリストから部署名などを出力することは可能でしょうか?
いつもご利用ありがとうございます。
部署名でしたら、Departmentプロパティで取得が可能です。
記事内の以下の項目に記載がありますので、ご参考ください。
<追加>連絡先の「全般」と「詳細」に入力した87項目の情報をまとめて出力する
https://extan.jp/?p=1532#%EF%BC%9C%E8%BF%BD%E5%8A%A0%EF%BC%9E%E9%80%A3%E7%B5%A1%E5%85%88%E3%81%AE%E3%80%8C%E5%85%A8%E8%88%AC%E3%80%8D%E3%81%A8%E3%80%8C%E8%A9%B3%E7%B4%B0%E3%80%8D%E3%81%AB%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%9F87%E9%A0%85%E7%9B%AE%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B
回答ありがとうございました。
無事に特定ユーザーのみ実行する事ができました。
前回からお話ししているアカウントの件と
同じになってしまうかもしれませんが、
現在は個人用の連絡先から出力していますが
共有の連絡先にあるアドレス帳を出力する事は可能でしょうか。
よろしくお願いいたします。
共有の連絡先にあるアドレス帳を出力する方法について記事にまとめましたので、
よろしければご参照ください。
https://extan.jp/?p=6621
特定ユーザーのみ実行する件について実装できたようで良かったです。
共有の連絡先にあるアドレス帳を出力する件について、
対象アドレスが参加しているドメイン内であることが前提となりますが、
記事内のコードを以下のように変更頂ければ可能となります。
■変更前
Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)
■変更後
Set recOther = olNamespace.CreateRecipient(“<アドレスを指定>”)
Set olFolder = olNamespace.GetSharedDefaultFolder(recOther, olFolderContacts)