title: Send Outlook Meeting Invitation using Excel
body: <p>I am looking to send meeting invitations for each row in a worksheet.</p>
  
  <p>I am able to create an item that when displayed shows as an appointment, not a meeting request that can be sent to others. I need to click on "Invite Attendees" in Outlook and then the email addresses display and I can send but it would take a lot of time if I have more than a few rows.</p>
  
  <p>This seems to be a common problem as I found this question in other forums but none have a solution that worked for me. </p>
  
  <pre class="lang-vb prettyprint-override"><code>Sub SendAction()
  
      Dim OutApp As Object
      Dim OutMail As Object
      Dim cell As Range
  
      Application.ScreenUpdating = False
      Set OutApp = CreateObject("Outlook.Application")
  
      For Each cell In Worksheets("Action Log").Range("H5:H50").Cells
          Set OutMail = OutApp.CreateItem(1)
          If cell.Value Like "*@*" Then      'try with less conditions first
              With OutMail
                  .MeetingStatus = olMeeting
                  .RequiredAttendees = Cells(cell.Row, "H").Value
                  .Subject = Cells(cell.Row, "I").Value
                  .Body = Cells(cell.Row, "I").Value
                  .Start = Cells(cell.Row, "E").Value &amp; " " &amp; TimeValue("8:00 AM")
                  .Location = "Your Office"
                  .Duration = 15 ' 15 minute meeting
                  .BusyStatus = 0 ' set as free
                  .ReminderSet = True 'reminder set
                  .ReminderMinutesBeforeStart = "20160" 'reminder 2 weeks before
                  .display                
              End With
  
              Cells(cell.Row, "K").Value = "sent"
              Set OutMail = Nothing
          End If
      Next cell
  
      Application.ScreenUpdating = True
  
  End Sub
  </code></pre>
  
  <p>Here is one alternative I tried but it did not fix the issue: </p>
  
  <pre class="lang-vb prettyprint-override"><code>Application.Wait DateAdd("s", 2, Now)       'waiting for 2 sec to let OL window to display.
  SendKeys "%s", True                         'Sending Mail.
  Set olApt = Nothing
  
  MsgBox "Invite Sent", vbInformation
  </code></pre>
  
  <p>Source: <a href="https://excel-buzz.blogspot.com/2015/03/automation-sending-invitation-to.html" rel="nofollow noreferrer">https://excel-buzz.blogspot.com/2015/03/automation-sending-invitation-to.html</a></p>
  
  <p>Another alternative is to change <code>.Display</code> to <code>.Save</code> but the <code>.Send</code> function won't work either way and I would then need to open the meeting request from my draft messages in Outlook.</p>