Без примера строки значений трудно отладить этот код. Таким образом, мы только подтверждаем ваше слово, что оно действительно. Но я немного исправил код.
- В вашем коде дважды есть 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: 25.11.2011 13:30:00
- D2: 30
- E2: 2
- F2: 30
- G2: Давайте встретимся!
- H2: -адрес электронной почты-
- I2: ЛОЖЬ