この記事の要約
- 課題・悩み「いつも送るグループの複数宛先の入力を簡単にしたい」
- 解決策「複数のメールアドレスをワンクリック入力するVBAマクロのコード」を解説
Outlookには、複数の連絡先をグループとして登録して、一括で宛先に出力できる機能があります。
複数の宛先をいちいち入力する必要がなくなるため大変便利ですが、宛先グループが深い階層に登録されているため、たどり着くまでに複数のフォルダを選択して行く必要があり少し面倒。
そこで、OutlookのVBAマクロを作成して、クイックアクセスツールバーに登録することで、1クリックで宛先グループを入力できるようにしました。
【複数のメールアドレスをワンクリック入力するVBAマクロのコード】を図解で解説しています。
Outlookで登録した連絡先グループを呼び出して宛先にするVBAマクロのコード
このVBAマクロは、Microsoft Outlookの連絡先グループから特定のグループを見つけ、そのグループに属するメンバー全員を選択されたメールの宛先に追加するためのものです。
すなわち、Outlookの連絡先にあるグループを使って、メールの宛先を一度に設定することができます。
Sub AddGroupMembersToMailRecipient()
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim Item As Object
Dim olGroup As Outlook.DistListItem
Dim olMail As Outlook.MailItem
Dim groupName As String
Dim found As Boolean
' グループ名を設定(適切なグループ名を指定)
groupName = "YourGroupName" ' 例: "MarketingTeam" など
' Outlookオブジェクトの初期化
Set olApp = Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)
found = False
' 連絡先フォルダーを検索してグループを探す
For Each Item In olFolder.Items
If TypeName(Item) = "DistListItem" Then
Set olGroup = Item
If olGroup.DLName = groupName Then
found = True
Exit For
End If
End If
Next Item
If found Then
' 選択されているメールアイテムを取得
If TypeOf olApp.ActiveWindow Is Outlook.Inspector Then
Set olMail = olApp.ActiveInspector.CurrentItem
ElseIf TypeOf olApp.ActiveWindow Is Outlook.Explorer Then
Set olMail = olApp.ActiveExplorer.Selection.Item(1)
End If
' メールの宛先にグループメンバーを追加
If Not olMail Is Nothing Then
For i = 1 To olGroup.MemberCount
olMail.Recipients.Add(olGroup.GetMember(i).Address)
Next i
olMail.Recipients.ResolveAll
olMail.Save
End If
Else
MsgBox "指定された連絡先グループが見つかりません。"
End If
' オブジェクトの解放
Set olMail = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
コードのカスタマイズ箇所
このコードは、特にグループ名の部分が重要で、適切なグループ名に変更することで、望む動作を実現できます。
また、特定のメールアイテムに対して操作を行いたい場合や、宛先の種類(To, CC, BCC)を変更したい場合は、それぞれの部分を適宜調整する必要があります。
グループ名の設定
このコードでは、yourgroupname_という文字列を変更して、操作したい連絡先グループの名前に合わせる必要があります。
実際の連絡先グループ名に応じて、この部分を書き換えてください。
groupName = "YourGroupName"
メールアイテムの選択
コードは現在Outlookで選択されているメールアイテムを操作対象とします。
別のメールアイテムを操作したい場合は、この部分を変更する必要があります。
一般的には、この部分の変更は必要ありませんが、特定のメールを指定したい場合は変更が必要です。
Set olMail = olApp.ActiveInspector.CurrentItem Set olMail = olApp.ActiveExplorer.Selection.Item(1)
宛先への追加方法
グループ内の連絡先をメールの宛先に追加する方法を変更することも可能です。
例えば、CCやBCCに追加したい場合など、宛先の種類を変更する必要がある場合は、この部分を変更します。
olMail.Recipients.Add(olGroup.GetMember(i).Address)
処理ごとの解説
Outlookオブジェクトの初期化
outlookアプリケーションと必要なオブジェクトを準備します。
これにより、outlookの連絡先やメールにアクセスできます。
Set olApp = Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)
グループの検索
指定された名前の連絡先グループを連絡先フォルダーから探します。
For Each Item In olFolder.Items
If TypeName(Item) = "DistListItem" Then
Set olGroup = Item
If olGroup.DLName = groupName Then
found = True
Exit For
End If
End If
Next Item
選択されたメールの取得
現在Outlookで選択されているメールを取得します。
If TypeOf olApp.ActiveWindow Is Outlook.Inspector Then
Set olMail = olApp.ActiveInspector.CurrentItem
ElseIf TypeOf olApp.ActiveWindow Is Outlook.Explorer Then
Set olMail = olApp.ActiveExplorer.Selection.Item(1)
End If
メール宛先への追加
検索したグループの各メンバーをメールの宛先に追加します。
If Not olMail Is Nothing Then
For i = 1 To olGroup.MemberCount
olMail.Recipients.Add(olGroup.GetMember(i).Address)
Next i
olMail.Recipients.ResolveAll
olMail.Save
End If
オブジェクトの解放
使用したオブジェクトを解放し、メモリをクリアします。
Set olMail = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
注意点
データ量
連絡先が非常に多い場合、グループの検索に時間がかかる可能性があります。
操作の取り消し
VBAマクロで実行した操作は自動的に保存されるため、元に戻すことはできません。
慎重に操作してください。
セキュリティ設定
Outlookではマクロの実行にセキュリティ設定の変更が必要な場合があります。
不明な場合は、システム管理者に相談してください。
必要な環境設定
OutlookのVBAマクロを使用するためには、以下の環境設定が必要です。
これにより、OutlookでVBAマクロを使用する準備が整います。
ただし、マクロの使用はセキュリティリスクを伴うことがあるため、必ず信頼できるマクロのみを使用してください。
Outlookを開く
Outlookを開きます。
オプションの選択
[ファイル] メニューから [オプション] を選択します。
セキュリティセンターの選択
[セキュリティセンター] をクリックし、[セキュリティセンターの設定] を選択します。
マクロの設定変更
[マクロの設定] で「マクロをすべて有効にする」または「通知を表示してマクロを有効にする」を選択します(セキュリティ上のリスクがあるため、慎重に選択してください)。
Outlookの再起動
設定を保存し、Outlookを再起動します。
まとめ
VBAマクロでメール作成の効率アップ
Microsoft365の作業を自動化・効率化
Microsoft365の作業を自動化・効率化する便利なVBAマクロのコードの一覧です。
コピペでOK!Word VBAのコード一覧
Wordの作業を自動化・効率化する便利なVBAマクロの一覧です。
コメント