Written by Dai

【VBA】メールを自動化して作業効率を爆上げ|案内メール自動化|業務効率化

CODE

VBAでメールを自動作成するコードです。
会議などの開催案内など毎回作成するのは面倒ですよね?
面倒な作業はマクロで自動化して作業効率を爆上げしましょう!

会議開催などの案内メール作成をボタン一つで行えるVBAコードを作ってみました。
コードを少し修正すればいろいろな応用ができますよ!
VBAコードをmoduleにコピペしてもらい、Excelに下記の様に準備してもらえばメールの自動作成ができると思います。
セルの位置が変わるとマクロがうまく動作しないのでご注意を。

f:id:dai_toi_2020:20200429225914p:plain

送信先のリストを選択することで、送信先を簡単に変更できます。
本文や件名が定分型でほぼ確定している連絡などは使い回しができます。
開催場所や時間などは都度変更して使ってください。
不要な部分があればそこだけコードを無効化しておいてもらえばOKです。

VBAで[Outlook]を操作するためには、下記の設定をはじめに行ってください。
開発タブからVBAを開き、[ツール]⇨[メニュー]⇨[参照設定]を開きます。

表示された[参照設定 – VBAProject]の[参照可能なライブラリ ファイル]の
一覧より、[Microsoft Outlook 1x.0 Object Library]のチェック ボックスを
オンにします。これで準備は完了です。あとは下記のコードをコピペすればOK!

Sub Mail作成()

Dim add1 As String
Dim SJ, MB, age1, age2, age3, X, Y As String
Dim oapp As Outlook.Application
Dim mitem As Outlook.MailItem
Dim BN, SN As String
Dim ANS As Integer
On Error GoTo ErrMsg
ANS = MsgBox("メールを作成しますか?", _
   vbYesNo + vbQuestion + vbDefaultButton2, "作成")
 If ANS = vbYes Then
  Application.ScreenUpdating = False
  BN = ActiveWorkbook.Name
  SN = ActiveSheet.Name
   If Range("B4").Value = "" Then
    MsgBox ("グループを選択してください")
    Exit Sub
 ElseIf Range("B4").Value = "グループA" Then
  add1 = Range("C8").Value
  ElseIf Range("B4").Value = "グループB" Then
  add1 = Range("C9").Value
  ElseIf Range("B4").Value = "グループC" Then
  add1 = Range("C10").Value
 End If         
 SJ = Range("C11").Value  '件名
 MB = Range("C12").Value  '本文
 age1 = Range("C13").Value  '議題1
 age2 = Range("C14").Value  '議題2
 age3 = Range("C15").Value  '議題3
 X = Range("C16").Value  '開催日
 Y = Range("C17").Value  '場所
 Set oapp = CreateObject("Outlook.Application")
 Set mitem = oapp.CreateItem(olMailItem)
 With mitem
  .BodyFormat = 2
  .To = add1
  .Subject = SJ
  .HTMLBody = "各位" & "<br>" & "<br>" & _
  MB & "<br>" & "<br>" & "【議題】" & "<br>" & _
  age1 & "<br>" & age2 & "<br>" & age3 & "<br>" & "<br>" & _
  "開催日:" & X & "<br>" & "<br>" & _
  "場所:" & Y & "<br>" & "<br>" & "送信者名"
  .Display
 End With
 Set oapp = Nothing
 Set mitem = Nothing
 Application.ScreenUpdating = True     
 Else
 MsgBox "キャンセルしました"
 Exit Sub
 End If   

 ErrMsg:
 Select Case Err.Number
  Case 0
   Exit Sub
  Case Else
   MsgBox "エラーが発生しました" _
   & vbCrLf & "エラー番号" & Err.Number _
   & vbCrLf & Err.Description
 End Select
End Sub

毎回同じ様な業務はマクロで自動化して効率UPしましょう!
時間を有効に使えるようになれば、仕事は楽になるし、新しいことへも挑戦できます。
とても良いことですよね!