我正在尝试在Microsoft Outlook中实现一个VBA项目,如果没有指定会议,它会设置会议的默认位置。
作为用户,当我尝试创建会议/日历条目但未指定位置时,Outlook会提示我以下消息:
Outlook has detected the following:
- The location is not specified.
Do you want to send the meeting anyway?
Yes/No
在很多情况下会议的位置被理解,或写在主题中,或者我只是为自己安排一些工作,所以一直得到提示非常烦人。
我在这里找到了一些代码: http://blogs.technet.com/b/ewan/archive/2013/11/08/tip-o-the-week-196-change-outlook-meeting-duration.aspx
更改默认的Outlook约会持续时间设置。我修改它以满足我的要求。
我的意图是:
现在,下面的代码适用于正在创建的新约会,但是如果我打开现有约会并且“位置”字段的值为空,则将其设置为"(默认值)"关闭约会时提示我保存/取消(因为它认为我修改了项目)。这不是我打算如何工作的。
目前的代码:
Private objMeeting As clsMeeting
Private Sub Application_Quit()
Set objMeeting = Nothing
End Sub
Private Sub Application_Startup()
Set objMeeting = New clsMeeting
End Sub
Private WithEvents olkIns As Outlook.Inspectors, _
WithEvents olkApt As Outlook.AppointmentItem
Private Sub Class_Initialize()
Set olkIns = Application.Inspectors
End Sub
Private Sub Class_Terminate()
Set olkIns = Nothing
End Sub
Private Sub olkApt_Unload()
Set olkApt = Nothing
End Sub
Private Sub olkIns_NewInspector(ByVal Inspector As Inspector)
If Inspector.CurrentItem.Class = olAppointment Then
Set olkApt = Inspector.CurrentItem
If Len(olkApt.Location) > 0 Then
Else
olkApt.Location = "(default)"
End If
End If
End Sub
答案 0 :(得分:0)
试试这个
Private Sub olkIns_NewInspector(ByVal Inspector As Inspector)
If Inspector.currentItem.Class = olAppointment Then
Set olkApt = Inspector.currentItem
If olkApt.Saved = False Then
If Len(olkApt.location) > 0 Then
Else
olkApt.location = "(default)"
End If
End If
End If
Set olkApt = Nothing
End Sub
答案 1 :(得分:0)
olkApt.Saved = False
的使用在此实例中不起作用,因为新约会的值始终为True
。相反,尝试:
Private Sub olkIns_NewInspector(ByVal Inspector As Inspector)
If Inspector.CurrentItem.Class = olAppointment Then
Set olkApt = Inspector.CurrentItem
If olkApt.CreationTime = #1/1/4501# Then
olkApt.Location = DEFAULT_LOCATION
End If
End If
End Sub
更新:我已实施此代码并且效果很好......除非我与与会者创建了日历邀请。保存事件后,我执行拖放操作以更改事件日期/时间。我被提示保存并发送通知,我这样做;然而,事件的视觉放置"跳跃"回到原始位置,即使事件的内容仍然显示新修改的日期/时间。
所以,我有一个日历事件,日历屏幕上的视觉表示与事件的细节不匹配。
有关于此的任何想法吗?