Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
outlook(Exchange)のグローバルアドレス一覧から自宅電話を取得したい
投稿日時: 21/03/05 13:48:59
投稿者: F@NKS

ExchangeUser オブジェクト から自宅電話を取得したいと思うのですが、項目が無い??どこに格納されているのでしょうか?
 
 
 
Option Explicit
 
    Dim x As Integer
    Dim OutlookObj As Outlook.Application
    Dim AddressListObj As Outlook.AddressList
    Dim AddressEntryObj As Outlook.addressEntry
    Dim ExchangeUserObj As Outlook.ExchangeUser
     
Sub ボタン1_Click()
 
    Application.ScreenUpdating = False
         
    Set OutlookObj = CreateObject("Outlook.Application")
    Set AddressListObj = OutlookObj.Session.AddressLists("ALL users")
 
    With Sheets("Global")
        .Range("A1").CurrentRegion.Clear
        .Cells(1, 1) = "LastName" '姓
        .Cells(1, 2) = "FirstName" '名
        .Cells(1, 3) = "CompanyName" '勤務先
        .Cells(1, 4) = "Department" '部署
        .Cells(1, 5) = "JobTitle" '役職
        .Cells(1, 6) = "FullName" '表題
        .Cells(1, 7) = "Email1Address" '電子メール
        .Cells(1, 8) = "Email1DisplayName" '表示名
        .Cells(1, 9) = "BusinessTelephoneNumber" '勤務先電話
        .Cells(1, 10) = "HomeTelephoneNumber" '自宅電話
        .Cells(1, 11) = "MobileTelephoneNumber" '携帯電話
        With .Range("A1:Z1")
            .Font.Bold = True
            .Font.ColorIndex = 10
            .Font.Size = 11
        End With
    End With
     
    x = 1
 
    For Each AddressEntryObj In AddressListObj.AddressEntries
     
        Set ExchangeUserObj = AddressEntryObj.GetExchangeUser
   
     
        If ExchangeUserObj.FirstName = "" And ExchangeUserObj.LastName = "" Then
            '何もしない
        Else
            If ExchangeUserObj.Department = "業務用アカウント" Then
                '何もしない
            Else
                x = x + 1
                Application.StatusBar = "Processing no. " & x & " ... "
         
                With Sheets("Global")
                    .Cells(x, 1) = ExchangeUserObj.LastName '姓
                    .Cells(x, 2) = ExchangeUserObj.FirstName '名
                    .Cells(x, 3) = ExchangeUserObj.CompanyName '勤務先
                    .Cells(x, 4) = ExchangeUserObj.Department '部署
                    .Cells(x, 5) = ExchangeUserObj.JobTitle '役職
                    .Cells(x, 6) = ExchangeUserObj.LastName & " " & ExchangeUserObj.FirstName '表題
                    .Cells(x, 7) = ExchangeUserObj.PrimarySmtpAddress '電子メール
                    .Cells(x, 8) = ExchangeUserObj.Name & " (" & ExchangeUserObj.PrimarySmtpAddress & ")" '表示名
                    .Cells(x, 9) = ExchangeUserObj.BusinessTelephoneNumber '勤務先電話
                    .Cells(x, 10) = "" '自宅電話
                    .Cells(x, 11) = ExchangeUserObj.MobileTelephoneNumber '携帯電話
               End With
            End If
        End If
         
        DoEvents
    Next AddressEntryObj
     
    Application.ScreenUpdating = True
     
    MsgBox "Outlookのインポートが完了しました!", vbInformation
     
End Sub

回答
投稿日時: 21/03/05 14:37:01
投稿者: Suzu

一種の UserProperty なのでは?
 
ExchangeUser オブジェクト (Outlook)
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.exchangeuser
 

引用:
また、 PropertyAccessor オブジェクトを使用してオブジェクトモデルで公開されていない、Exchange ユーザー固有の他のプロパティにアクセスすることもできます。

 
 
PropertyAccessor オブジェクト (Outlook)
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.propertyaccessor

投稿日時: 21/03/05 16:54:14
投稿者: F@NKS

PropertyAccessor オブジェクトを見てみましたが見当たりません。んー?
 
 

回答
投稿日時: 21/03/05 17:36:45
投稿者: sk

引用:
ExchangeUser オブジェクト から自宅電話を取得したい

引用:
.Cells(1, 10) = "HomeTelephoneNumber" '自宅電話

HomeTelephoneNumber プロパティは Outlook.ExchangeUser オブジェクトではなく
Outlook.ContactItem オブジェクトのメンバーです。

投稿日時: 21/03/08 17:34:30
投稿者: F@NKS

こんな感じで、追記して実行しましたが、
Set ContactItemObj = OutlookObj.CreateItem(olContactItem)
確かに、HomeTelephoneNumberは、ありますが値が入っていません。ん〜

トピックに返信