Outlook(Classic)を操作する前処理のプロシージャです。メールの操作をする際に必要な条件(メールを開いているか、選択しているかなど)を満たす処理で、メール作成、送信双方のプロシージャ前処理として使用できます。
コード
➤コードはこちら
Option Explicit
Sub OlMailPreSub()
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
Dim olMail As Outlook.MailItem
Dim istoreply As String
istoreply = MsgBox("返信?", vbYesNoCancel)
'赤文字の注意文
Dim 注意文 As String
Dim htbody As String
注意文 = "宛先等に間違いありませんか?"
htbody = "<html><body><p>" & "<span style='color:red;'>" & 注意文 & "</span><br></body></html>"
1:
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application") ' 既存のインスタンスを取得
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application") ' 新しいインスタンスを作成
End If
On Error GoTo 0
If olApp Is Nothing Then
MsgBox "Outlookを取得または起動できませんでした。", vbExclamation
If MsgBox("再試行しますか?", vbOKCancel) <> vbOK Then
GoTo 1
Else
Exit Sub
End If
End If
On Error Resume Next
Dim olrep As Outlook.MailItem
If istoreply = vbYes Then
If MsgBox("メールを開き、返信メールを選択状態にしていますか?", vbYesNoCancel) <> vbYes Then Exit Sub
2:
If olApp.ActiveExplorer.Selection.count = 0 Then
If MsgBox("返信するメールを選択してください。", vbOKCancel) = vbOK Then
GoTo 2
Else
Exit Sub
End If
End If
Set olMail = olApp.ActiveExplorer.Selection.item(1)
Set olrep = olMail.ReplyAll
If Err.Number <> 0 Then
MsgBox "メールを選択してください"
Err.Clear ' エラー状態をクリア
GoTo 2
End If
Else
Set olMail = olApp.CreateItem(olMailItem)
Set olrep = olMail
End If
On Error GoTo 0
olrep.Display
End Sub
メール操作前の処理に入りつけることでエラー回避ができます(OutlookClassicが終了しないことが前提ですが...)。
使用前には、参照設定でoutlookにチェックを付けてください。

ポイント機能
・GetObjectとCreateObjectの併用
GetObjectとCreateObjectの併用
オブジェクト取得メソッドとしてある二つを使用しています。これはメールアプリを開いていても開いていなくても操作できるようにするためです。コンピュータメモリの容量とその動作の観点からはあまりリソースを割くことは好ましくない為、GetObjectメソッド使用の方が好ましいですが、メールの操作ということであまり影響もないためどちらも使用しています。

CreateObjectは参照設定でチェックをしない=事前バインディングをしていない場合の使用が多いですが、今回はメールアプリの開閉に関わらず実行するために両方を使用しています。
外部アプリ使用時の宣言では、変数に直接 Dim 変数 As New Outlook.applicationを宣言するという方法と、今回の2行記載方法があります。

どちらがいいかというと、2行で書くのが無難とのことです。1行でもよいですが、その場合set Nothingをした後でも変数を使うと再度オブジェクトが再生成されてしまうようです。
参考:VBAオブジェクト変数の宣言時に1行でAs Newした時と2行に分けてSetした時の違い #ExcelVBA - Qiita