Excel создает запрос на встречу, не в состоянии отправить

Я работаю над некоторым кодом, который создает запрос Outlook Meeting, и я бы хотел, чтобы он отправил список приглашенных. Я могу создать запрос на собрание, но я не могу его отправить. Я вижу запрос на собрание в своем календаре. Как я могу его отправить?

Вот мой код:

Sub AddAppointments() ' Create the Outlook session Set myOutlook = CreateObject("Outlook.Application") ' Start at row 2 r = 2 Do Until Trim(Cells(r, 1).Value) = "" ' Create the AppointmentItem Set myApt = myOutlook.CreateItem(1) ' Set the appointment properties myApt.Subject = Cells(r, 1).Value myApt.Location = Cells(r, 2).Value myApt.Start = Cells(r, 3).Value myApt.Duration = Cells(r, 4).Value myApt.Recipients.Add Cells(r, 8).Value myApt.MeetingStatus = olMeeting myApt.ReminderMinutesBeforeStart = 88 myApt.Recipients.ResolveAll myApt.AllDayEvent = AllDay ' If Busy Status is not specified, default to 2 (Busy) If Trim(Cells(r, 5).Value) = "" Then myApt.BusyStatus = 2 Else myApt.BusyStatus = Cells(r, 5).Value End If If Cells(r, 6).Value > 0 Then myApt.ReminderSet = True myApt.ReminderMinutesBeforeStart = Cells(r, 6).Value Else myApt.ReminderSet = False End If myApt.Body = Cells(r, 7).Value myApt.Save r = r + 1 myApt.Send Loop End Sub 

Без примерной строки значений трудно отладить этот код. Поэтому мы только идем по твоему слову, что оно действительно. Но я немного исправил код.

  • У вас есть ReminderMinutesBeforeStart два раза в вашем коде. Я удалил первый, потому что похоже, что он зависит от данных строки.
  • Вы вызываете метод ResolveAll , но не проверяете, разрешены ли ваши получатели. Если это адреса электронной почты, я бы не стал беспокоиться.
  • Существует сочетание ранних и поздних ссылок. Например, вы используете 1 вместо olAppointmentItem, но позже используйте olMeeting вместо 1.
  • Свойство AllDayEvent принимает логическое значение, но поскольку вы не указали какие-либо переменные, мы не можем сказать, что означает AllDay . Я преобразовал это, чтобы читать из столбца I. Также обратите внимание, что если вы установите для AllDayEvent значение True, вам не нужно будет устанавливать Duration.

Принимая правильные входные значения, этот код работал для меня:

 Option Explicit Sub AddAppointments() Dim myoutlook As Object ' Outlook.Application Dim r As Long Dim myapt As Object ' Outlook.AppointmentItem ' late bound constants Const olAppointmentItem = 1 Const olBusy = 2 Const olMeeting = 1 ' Create the Outlook session Set myoutlook = CreateObject("Outlook.Application") ' Start at row 2 r = 2 Do Until Trim$(Cells(r, 1).value) = "" ' Create the AppointmentItem Set myapt = myoutlook.CreateItem(olAppointmentItem) ' Set the appointment properties With myapt .Subject = Cells(r, 1).value .Location = Cells(r, 2).value .Start = Cells(r, 3).value .Duration = Cells(r, 4).value .Recipients.Add Cells(r, 8).value .MeetingStatus = olMeeting ' not necessary if recipients are email addresses ' myapt.Recipients.ResolveAll .AllDayEvent = Cells(r, 9).value ' If Busy Status is not specified, default to 2 (Busy) If Len(Trim$(Cells(r, 5).value)) = 0 Then .BusyStatus = olBusy Else .BusyStatus = Cells(r, 5).value End If If Cells(r, 6).value > 0 Then .ReminderSet = True .ReminderMinutesBeforeStart = Cells(r, 6).value Else .ReminderSet = False End If .Body = Cells(r, 7).value .Save r = r + 1 .Send End With Loop End Sub 

Примеры входных значений в ячейках (включая строку заголовка):

  • A2: Мое собрание
  • B2: Мой стол
  • C2: 11/25/2011 13:30:00 PM
  • D2: 30
  • E2: 2
  • F2: 30
  • G2: Давай встретимся!
  • H2: адрес электронной почты –
  • I2: FALSE

Меня устраивает!

Пожалуйста, имейте в виду, что у вас есть несколько строк

 .Recipients.Add Cells(r, 8).value 

для добавления большего количества получателей. Потому что написано несколько адресов в одной ячейке, разделенной на «;» приводит к ошибке при отправке встречи!

или использовать

 .Recipients.ResolveAll 
  • excel отправить почтовый макрос в пользовательской форме
  • Использование визуальной базы для доступа к вложенной папке в папке «Входящие»?
  • Адрес X500 вместо передачи адреса электронной почты отображается при пересылке на лист Excel
  • Excel VBA для подсчета электронных писем в общих почтовых ящиках каждые 15 минут
  • Как добавить содержимое файла .htm в строку?
  • Отправка по электронной почте выбранного диапазона в Excel / Outlook
  • Откройте приложение в окне Excel и скопируйте, чтобы открыть книгу
  • Найти значение в Excel из Outlook
  • Автоматическая загрузка и сохранение вложения из электронной почты в Excel
  • Как открыть Excel, если он еще не открыт
  • отправлять электронную почту Outlook из excel и добавлять гиперссылку по электронной почте, которая идет на номер строки при открытии электронной таблицы
  • Interesting Posts

    Функция IF с двумя диапазонами ячеек

    Выгрузка выгрузки НЕ выгружает UserForm

    VBA Добавление приложения с использованием IF Formula

    Excel. Как удалить элементы в столбце 1 из столбца 2 и поместить результаты в столбец 3?

    Отдельный список из нелинейного диапазона Excel C #

    присваивать значения массива диапазону в excel spsh

    VBA – копирование определенного значения из одного столбца листа в следующую строку строки

    Доступ к VBA Импорт конкретных файлов Excel из разных подпапок

    Пользовательская функция для подсчета количества используемых ячеек в столбце Excel 2010

    Несколько IF THEN в Excel

    Spring + GWTP: загрузка файла Excel из OutputStream не работает

    Excel VBA – можно ли задавать свойства для каждой ячейки диапазона с помощью матрицы?

    Если {cell} содержится в {range}, то печатайте ячейку?

    Как заставить SSIS обрабатывать именованный диапазон как строки с столбцами?

    Массив листа / диапазона для циклического преобразования графиков

    Давайте будем гением компьютера.