我有一个处理任何传入项目的Outlook代码,并且如果传递给定条件,则仅在邮件项目中创建Outlook日历中的新约会。代码忽略传入的会议请求
该代码不区分邮件项目和会议请求项目。这会导致系统在1899年从会议项目中创建一个新会议,而忽略这一点。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
On Error Resume Next
Set ns = Application.Session
arr = Split(EntryIDCollection, ",")
For i = 0 To UBound(arr)
Set itm = ns.GetItemFromID(arr(i))
If (itm.Class = olMail) Then
Set objMail = itm
If objMail.Subject = "Approved" And objMail.Sender = "[email protected]" Then
Set Reg1 = New RegExp
With Reg1
.Pattern = "([0-9]{2})(.)([0-9]{2})(.)([0-9]{4})(\s)(\W)(\s)([0-9]{2})(.)([0-9]{2})(.)([0-9]{4})"
.Global = True
End With
If Reg1.test(objMail.Body) Then
Set M1 = Reg1.Execute(objMail.Body)
For Each m In M1
Set objAppt = Application.CreateItem(olAppointmentItem)
Set objInsp = objAppt.GetInspector
Set objDoc = objInsp.WordEditor
Set objSel = objDoc.Windows(1).Selection
Next
End if
.....
End Sub
[文档](https://msdn.microsoft.com/VBA/Outlook-VBA/articles/create-an-appointment-as-a-会议在日历上)建议您应设置[MeetingRequest属性](https://msdn.microsoft.com/VBA/Outlook-VBA/articles/appointmentitem-meetingstatus-property-outlook) - 'objAppt.MeetingStatus = olMeeting' – stuartd
那么确切的问题是什么?检查“If(itm.Class = olMail)Then”告诉你它是一个邮件项目,而它是一个会议项目? –
在邮箱中发送并接收到会议请求后,预期的结果是,由于只处理邮件,因此它将失败,因为只有邮件需要处理。没有会议被创建。现在的实际结果是创建了空主题行,空位置行和开始时间30.12.1899和结束时间29.12.1899的全天事件。此外,事件正文还包含处理邮件的部分代码 –