【VBA】~番外編~

Dim wslist As Worksheet
Dim result, s, e, time, i As Long
Dim attached1 As String
Dim outlookObj As Outlook.Application
Dim mailItemObj As Outlook.mailItem
Dim myattachments As Outlook.Attachments

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)

Sub 連続送信マクロ()

result = MsgBox("連続送信を実行しますか?", vbYesNo + vbExclamation)

If result = vbYes Then

    Set wslist = ThisWorkbook.Worksheets(1)

    attached1 = wslist.Range("I4").Value

    s = wslist.Range("B3").Value
    e = wslist.Range("C3").Value
    time = 2000
        
        For i = s To e
            
            wslist.Range("A3").Value = i
            
            Set outlookObj = New Outlook.Application
            Set mailItemObj = outlookObj.CreateItem(olMailItem)
            Set myattachments = mailItemObj.Attachments
                
                With mailItemObj
                    
                    .To = wslist.Range("F1").Value
                    .CC = wslist.Range("F2").Value
                    .Subject = wslist.Range("F3").Value
                    .BodyFormat = olFormatHTML
                    .Body = wslist.Range("F4").Value & vbCrLf & _
                            wslist.Range("F5").Value & vbCrLf & _
                            wslist.Range("F6").Value & vbCrLf & _
                            wslist.Range("F7").Value & vbCrLf & _
                            wslist.Range("F8").Value

                    If attached1 = "" Then
                        GoTo Label1
                    End If
                    
                    myattachments.Add attached1

Label1:
    .Display
    '.Send
                     
                End With

            Sleep time
            
        Next i
 
    Set outlookObj = Nothing

    MsgBox "送信完了"

Else

    Exit Sub
    
End If
 
End Sub