use*_*087 1 excel outlook vba outlook-vba meeting-request
我正在处理一些创建Outlook会议请求的代码,我希望它能够发送到被邀请者列表.我可以创建会议请求,但我无法发送.我可以在我的日历中看到会议请求.我该如何发送?
这是我的代码:
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
Run Code Online (Sandbox Code Playgroud)
如果没有示例行值,则很难调试此代码.所以我们只是说你的话是有效的.但我确实修改了一些代码.
假设有效的输入值,这段代码对我有用:
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
Run Code Online (Sandbox Code Playgroud)
单元格中的示例输入值(包括标题行):