Outlookで新しいメールを作成する際に、複数のメールアカウントに異なる署名を追加するにはどうすればよいですか?
「Outlookでのメール署名」のチュートリアルから、Outlookで署名を作成する方法がわかるはずです。しかし、新しい署名を作成した後、メッセージウィンドウで「署名」>「作成済みの署名」を選択することで、手動で新規メッセージにその署名を追加する必要があります。
もちろん、新しいメッセージを作成する際にOutlookに自動的に署名を追加させることもできます。「署名」>「署名」をクリックし、特定のメールアカウント用に署名を選択します(下記参照)。

しかし、多くのメールアカウントがあり、それらすべてに異なる署名を一括で追加したい場合はどうすればよいでしょうか?このチュートリアルでは、この作業を簡単に実行できるVBAメソッドを紹介します。
Outlookで新しいメールを作成する際に、複数のメールアカウントに異なる署名を追加する
1. Outlookで、Alt + F11キーを押してMicrosoft Visual Basic for Applicationsウィンドウを開きます。
2. Microsoft Visual Basic for Applicationsウィンドウで、プロジェクトペインの「ThisOutlookSession」をダブルクリックし、以下のVBAコードを「ThisOutlookSession(コード)」ウィンドウにコピーします。スクリーンショットをご覧ください:

VBAコード: Outlookで新しいメールを作成する際に、複数のメールアカウントに異なる署名を追加する - ThisOutlookSession
Public WithEvents GInspectors As Inspectors
Public WithEvents GExplorer As Explorer
Private Sub Application_Startup()
Set GInspectors = Application.Inspectors
Set GExplorer = Application.ActiveExplorer
End Sub
Private Sub GExplorer_InlineResponse(ByVal Item As Object)
‘Update by ExtendOffice
Dim xMail As MailItem
On Error Resume Next
EndTimer
If Item.Class = olMail Then
Set xMail = Item
Set GInspector = Nothing
Set GInspector = xMail.GetInspector
StartTimer
End If
End Sub
Private Sub GInspectors_NewInspector(ByVal Inspector As Inspector)
On Error Resume Next
EndTimer
Set GInspector = Nothing
Set GInspector = Inspector
StartTimer
End Sub
3. Microsoft Visual Basic for Applicationsウィンドウで、「挿入」>「モジュール」をクリックします。そして、次のVBAコードをモジュールウィンドウにコピーします。

VBAコード: Outlookで新しいメールを作成する際に、複数のメールアカウントに異なる署名を追加する - モジュール
Public Declare PtrSafe Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
Public Declare PtrSafe Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
Public TimerID As Long
Public GInspector As Inspector
Sub StartTimer()
On Error Resume Next
TimerID = SetTimer(0&, 0&, 1000&, AddressOf TimerProc)
End Sub
Sub EndTimer()
On Error Resume Next
KillTimer 0&, TimerID
End Sub
Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
On Error Resume Next
Call SetSignatureToAccount
EndTimer
End Sub
Sub SetSignatureToAccount()
‘Update by ExtendOffice
Dim xMail As MailItem
Dim xSignatureFile, xSignaturePath As String
Dim xSubject As String
Dim xDoc As Document
Dim xAccount As Account
Dim xIsNew As Boolean
Dim xInspector As Inspector
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
On Error Resume Next
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
xSubject = GInspector.Caption
Set xDoc = GInspector.WordEditor
xIsNew = False
Set xMail = GInspector.CurrentItem
Select Case xMail.Parent.Parent
Case "name1@example.com" 'Replace the email address in double quotes
If VBA.InStr(xSubject, "RE: ") = 1 Then
Exit Sub
ElseIf VBA.InStr(xSubject, "FW: ") = 1 Then
Exit Sub
Else
xSignatureFile = xSignaturePath & "Signature1.htm" 'Replace "Signature1" with your actual signature name
xIsNew = True
End If
Case "name2@example.com" 'Replace the email address in double quotes
If VBA.InStr(xSubject, "RE: ") Then
Exit Sub
ElseIf VBA.InStr(xSubject, "FW: ") Then
Exit Sub
Else
xSignatureFile = xSignaturePath & "Signature2.htm" 'Replace "Signature2" with your actual signature name
xIsNew = True
End If
'Add more Cases for more email accounts
End Select
If xIsNew = True Then
With xDoc.Application.Selection
.WholeStory
.EndKey
.InsertParagraphAfter
.MoveDown Unit:=wdLine, Count:=1
.InsertFile FileName:=xSignatureFile, Link:=False, Attachment:=False
End With
Else
With xDoc.Application.Selection
.MoveRight Unit:=wdCharacter, Count:=1
.HomeKey Emptyparam, Emptyparam
.InsertFile FileName:=xSignatureFile, Link:=False, Attachment:=False
End With
End If
Set xDoc = Nothing
Set GInspector = Nothing
Set xMail = Nothing
End Sub
- 1) 39行目と48行目のname1@example.comおよびname2@example.comを実際のメールアドレスに置き換えてください。
- 2) 45行目と54行目のSignature1およびSignature2を実際の署名名に置き換えてください。
- 3) 上記のVBAコードを使用すると、2つのメールアカウントに署名を追加できます。さらに多くのアカウントがある場合、コードの57行目を以下のようにさらに多くのケースに置き換えてください:
If VBA.InStr(xSubject, "RE: ") = 1 Then
Exit Sub
ElseIf VBA.InStr(xSubject, "FW: ") = 1 Then
Exit Sub
Else
xSignatureFile = xSignaturePath & "Signature.htm"
xIsNew = True
End If
4. Microsoft Visual Basic for Applicationsウィンドウで、「ツール」>「参照設定」をクリックし、「Microsoft Word 16.0 Object Library」のチェックボックスをオンにして、「OK」をクリックします。

5. Outlookを再起動し、VBAコードを保存します。
6. これで、署名を設定したメールアカウントで新しいメッセージを作成すると、対応する署名が自動的に追加されます。
注意: 新しいメッセージを作成する際に、2つの署名が追加される場合、メッセージウィンドウで「署名」>「署名」をクリックしてください。「既定の署名を選択」セクションで、2つの署名を持つメールアカウントを選択し、「新しいメッセージ」ドロップダウンリストから「(なし)」を選択してください。

関連記事
OutlookにHTML署名をインポートまたは挿入するにはどうすればよいですか?
たとえば、ウェブサイトからいくつかのHTML署名をダウンロードし、それをOutlookにインポートしたい場合があります。簡単な方法はありますか?この記事では、ステップバイステップでOutlookにHTML署名をインポートまたは挿入する方法を説明します。
Outlookの署名に背景色を挿入するにはどうすればよいですか?
Outlookのメールで背景色を追加したり削除するのは簡単です。しかし、Outlookの署名に背景色を挿入したり削除するにはどうすればよいでしょうか?以下の解決策が役立ちます:
Outlookで返信または転送時に複数のメールアカウントに異なる署名を追加するにはどうすればよいですか?
返信または転送時にOutlookに自動的に署名を追加したい場合、以下の手順で既定の署名を設定する必要があります。「署名」>「署名」をクリックし、特定のメールアカウント用に署名を選択します(下記参照)。しかし、多くのメールアカウントがあり、それらすべてに異なる署名を一括で追加したい場合はどうすればよいでしょうか?このチュートリアルでは、この作業を簡単に実行できるVBAメソッドを紹介します。
Outlookで返信や転送に異なる署名を設定するにはどうすればよいですか?
通常、Outlook内の異なるアカウントに異なる署名を設定できますが、返信や転送に異なる署名を適用したことはありますか?つまり、メールに返信するときに署名1が挿入され、メールを転送するときに署名2が適用されます。Outlookでこのタスクをどのように解決すればよいでしょうか?
最高のオフィス生産性ツール
速報: Kutools for Outlook が無料版をリリース!
新しい Kutools for Outlook の無料版を体験してください。70以上の素晴らしい機能が永遠に使えます!今すぐダウンロードをクリック!
🤖 Kutools AI : 高度なAI技術を使用して、メールの返信、要約、最適化、拡張、翻訳、作成を簡単に行います。
📧 メール自動化: 自動返信 (POPとIMAPで利用可能) / メール送信のスケジュール / メール送信時にルールによる自動 CC/BCC / 自動転送 (高度なルール) / 自動挨拶追加 / 複数の宛先を持つメールを個別のメールに自動的に分割...
📨 メール管理: メールの取り消し / 件名やその他によるスパムメールのブロック / 重複したメールの削除 / 高度な検索 / フォルダーを整理...
📁 添付ファイルプロ: バッチ保存 / バッチ切り離し / バッチ圧縮 / 自動保存 / 自動的に切り離す / 自動圧縮...
🌟 インターフェースマジック: 😊より美しくクールな絵文字 /重要なメールが来たときに通知 / クローズ中ではなくOutlookを最小化...
👍 ワンクリックの驚き: 全員に【Attachment】付きで返信 / フィッシング対策メール / 🕘送信者のタイムゾーンを表示...
👩🏼🤝👩🏻 連絡先とカレンダー: 選択したメールから連絡先を一括追加 /連絡先グループを個別のグループに分割 / 誕生日のリマインダーを削除...
Kutools for Outlook をワンクリックで即座にアンロック。待たずに今すぐダウンロードして効率を高めましょう!

