見出し画像

VBA学習日記🖊 _02

Outlook VBA 第2弾です。
まずは連絡先の登録。

CreateItem(olContactItem) で連絡先登録のオブジェクトが生成されるらしい。
書いてみると意外と簡単。

Option Explicit

Sub 連絡先登録()
    
    Dim myOutlook As Outlook.Application
    Dim myContact As Outlook.ContactItem       '新しい連絡先を操作するためのオブジェクト
    
    Set myOutlook = New Outlook.Application
    Set myContact = myOutlook.CreateItem(olContactItem)  'CreateItemメソッドでContactIemオブジェクトを生成する
    
    '連絡先の生成
    
    With myContact
        .FirstName = "連絡先の名前"
        .LastName = "連絡先の性"
        .Email1Address = "aaaa@bbbbb.co.jp"
        .Email1DisplayName = "表示名"
        .Companies = "勤務先"
        .Department = "部署"
        .JobTitle = "役職"
        .Display
        '.Save  '保存する場合 
    End With
    
End Sub

この表示見にくいかな?( ´∀` )

てゆうか連絡先を大量に保存する事なんてないからな~。
使う日がくるのだろうか( ´∀` )

大量の連絡先をExcelデータから読み取って登録とか。
やってみたいな。ランサーズとかでないかなW


次は受信メールをシートに書き出し。
(見出付けた方がいいなと今更ながら思う。W)

GetNamespaceでNamespaceオブジェクトを作る。
これでメールや予定表、連絡先のデータにアクセスすることができるらしい。すぐに理解できる人が羨ましいね( ´∀` )

Option Explicit

Sub 受信メール書き出し()
    '受信メールフォルダ内のメールをエクセルシートに書き出す
    
    Dim myOutlook   As Outlook.Application
    Dim myNamespace As Outlook.Namespace         'Outlookのメールや予定表、連絡先等のデータにアクセスする事ができるオブジェクト
    Dim myInbox     As Folder                        'Folderオブジェクト
    
    Set myOutlook = New Outlook.Application
    Set myNamespace = myOutlook.GetNamespace("MAPI")           'GetNamespaceメソッドでNamespaceオブジェクトを取得
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)   'GetDefaultFolderはフォルダを操作するメソッド(Folderオブジェクトを作成)
    
    With ThisWorkbook.Worksheets("受信ボックス")
    
        .Cells(2, 1).Value = myInbox.Items(1).SentOn
        .Cells(2, 2).Value = myInbox.Items(1).Subject
        .Cells(2, 3).Value = myInbox.Items(1).Body
        
    End With

End Sub

要はこの3点セットかな。
それをItemsでメール内容を取り出すと。
ちなみにItems(1)なので1件分だけ取り出してる。
複数だと↓ 

Option Explicit

Sub 特定のフォルダのメール()
    ''受信メールフォルダのサブフォルダ内のメールをエクセルシートに書き出す
    
    Dim myOutlook     As Outlook.Application
    Dim myNamespace   As Outlook.Namespace         'Outlookのメールや予定表、連絡先等のデータにアクセスする事ができるオブジェクト
    Dim myInbox       As Folder
    Dim myItem        As Object
    Dim mySubfolder   As Folder
    Dim i             As Long
    
    
    Set myOutlook = New Outlook.Application
    Set myNamespace = myOutlook.GetNamespace("MAPI")           'GetNamespaceメソッドでNamespaceオブジェクトを取得
    
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)   'GetDefaultFolderはフォルダを操作するメソッド(Folderオブジェクトを作成)
    Set mySubfolder = myInbox.Folders.Item("サブフォルダ1")    'FoldersオブジェクトのItemメソッドで指定のフォルダーを操作
    
    
    
    
    For i = 1 To mySubfolder.Items.Count
        With ThisWorkbook.Worksheets("受信ボックス")
            .Cells(i + 1, 1).Value = mySubfolder.Items(i).SentOn
            .Cells(i + 1, 2).Value = mySubfolder.Items(i).Subject
            .Cells(i + 1, 3).Value = mySubfolder.Items(i).Body
        End With
    Next
    
    
    
End Sub

自分で書いてみると意外と簡単。

まあその前に、
そんなにメールなんて飛んでこないけどね( ´∀` )

とりあえず自分でメール飛ばして自分でメール書き出してますW

今日はここまで。


この記事が気に入ったらサポートをしてみませんか?