【发布时间】:2020-06-25 15:32:38
【问题描述】:
我有一个处理任何传入项目的 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 = "x@mail.com" 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
【问题讨论】:
-
The documentation 建议您设置MeetingRequest property -
objAppt.MeetingStatus = olMeeting -
那么具体的问题是什么?检查“如果(itm.Class = olMail)然后”告诉您它是邮件项目,而它是会议项目?
-
在邮箱中发送和接收会议请求后,预期结果是它将失败,因为只有邮件要处理,即。没有创建会议。现在的实际结果是创建了一个主题行为空、位置行为空且开始时间为 30.12.1899 和结束时间为 29.12.1899 的全天事件。事件正文还包括处理邮件的部分代码
-
Remove On Error Resume Next 以便您查看错误。如果有错误更新问题。
-
好主意。运行时错误“13”,itm 变量的类型不匹配