メール作成

【Mail_Setting.xlsm】

Sub SendEmail()

    Dim OutlookApp As Object
    Dim MailItem As Object
    
    Dim mail_list As Variant
    Dim i As Integer
    
    Dim LastRow As Long
    
    ' C列の最終行を取得
    LastRow = Cells(Rows.Count, "C").End(xlUp).Row
    
    ReDim mail_list(0 To LastRow - 2) ' 配列のサイズを指定

    For i = 2 To LastRow Step 1
        mail_list(i - 2) = Cells(i, 3).Value
    Next
    
    ' 配列を1つの文字列に結合
    Dim EmailAddresses As String
    
    ' BCCのメールアドレスを設定
    For i = 0 To LastRow - 2 Step 1
        EmailAddresses = Join(mail_list, "; ")
'        If i = 0 Then
'            EmailAddresses = mail_list(0)
'        Else
'            EmailAddresses = EmailAddresses & "; " & mail_list(i)
'        End If
    Next
    
    
    ' メール本文の設定
    MailBody = Range("メール!B2").Value
    
    ' Outlook アプリケーションを取得
    On Error Resume Next
    Set OutlookApp = GetObject(, "Outlook.Application")
    On Error GoTo 0
    
    If OutlookApp Is Nothing Then
        Set OutlookApp = CreateObject("Outlook.Application")
    End If
    
    ' メール作成
    Set MailItem = OutlookApp.CreateItem(0)
    
    ' メール設定
    With MailItem
        .BCC = EmailAddresses ' BCC
        .subject = Range("メール!B1").Value ' 件名
        .Body = Range("メール!B2").Value ' 本文
        .Display ' メールを表示
        '.Send ' メールを直接送信する場合はコメントを外す
    End With

    Set MailItem = Nothing
    Set OutlookApp = Nothing
    
    ThisWorkbook.Save
    Application.Quit
    
End Sub

 

【RunExcelMacro.vbs】

Dim obj
Set obj = WScript.CreateObject("Excel.Application")

obj.Visible = false

obj.Workbooks.Open WScript.Arguments(0)
obj.Application.Run WScript.Arguments(1)

 

【メール自動生成はここをクリック.bat】

@echo off
setlocal enabledelayedexpansion
cd %~dp0

RunExcelMacro.vbs %~dp0\Mail_Setting.xlsm SendEmail