Outlook 约会 - 如何更改开始时间下拉列表中的项目

Posted

技术标签:

【中文标题】Outlook 约会 - 如何更改开始时间下拉列表中的项目【英文标题】:Outlook Appointment - how to change the items in the Start Time dropdown list 【发布时间】:2016-01-27 17:49:33 【问题描述】:

我需要将开始/结束时间下拉列表中的项目更改为相隔 5 分钟。似乎没有简单的方法来设置它,所以我正在尝试 VBA。

我可以让检查员在打开预约表格时进行查找:

If Inspector.CurrentItem.Class = olAppointment Then

...但我不知道如何参考或更改开始/结束时间下拉控件以获得我想要的时间列表。

如果有人知道允许用户以 5 分钟为间隔选择时间的替代方法,那也太好了!

【问题讨论】:

如果 Outlook 有一个宏记录器,这将是多么简单?我看不到通过标准用户界面更改下拉列表的方法。您是否考虑过使用用户表单或自定义 Outlook 表单 - 还是必须是原生的? 使用宏记录器,我可能会通过更改它们的值并查看代码中吐出的内容来了解​​如何引用表单元素,或者至少获得一些关于控件如何排列的线索. 我的老板希望这是无缝的 - 用户在设置或更改约会时不应该做任何不同于他们通常所做的事情。 我认为您不会在 Outlook 中对此进行调整。 VBA 将帮助您完成涉及应用程序的任务,但您不能总是修改应用程序。也许您需要在 VSTO 中开发更强大的应用程序插件。 【参考方案1】:

这并不能完全回答您的问题 - 但我不认为有可能做您需要的事情,因为这些下拉菜单没有编程界面,也没有办法手动实现您的目标想要,所以我不知道有一个宏记录器会有什么帮助

This Website 将告诉您如何设置具有自定义开始时间和持续时间的会议,但您可以构建自己的用户表单以在创建会议/约会时弹出请求开始和结束时间(或开始时间和持续时间,如果你愿意),这可能是你能得到的最好的解决方法。

您可能会为此发疯,并制作一个非模态用户表单,将自己置于现有控件之上并复制其功能 - 但这需要大量编码,而且速度会很慢,因为它会不断更新其位置或隐藏当约会项目失去焦点时,它自己,但如果你有决心,它是可以实现的。

在 VBA/Outlook 之外,您可以使用 Visual Studio 制作 VSTO 加载项,在约会/会议部分创建一个新功能区,该功能区有两个自定义控件,用于修改开始和结束日期。你也可以用你想要的任何代码来填充它们,但你可能需要学习 C# 才能做到这一点,尽管使用 VB.net(它更类似于 VBA)可能是可能的。 This Website 是一个合理的起点。

很抱歉这不是一个真正的答案,但我担心这个问题没有令人满意的答案。

【讨论】:

感谢您的回答!我的老板只是认为这很容易,因为 Excel 和 Word 宏是如此简单和灵活,但我想她错了。我们并不是真的愿意花时间学习和开发一项新技术来完成这项工作,因为它本来就不是一个重要的优先事项。【参考方案2】:

检查Appointment.Start 属性。使用以下函数获取当前对象

Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application
    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
    Case "Explorer"
    Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
    Case "Inspector"
    Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
    End Select
    GetCurrentItem.UnRead = False
    Set objApp = Nothing
End Function

【讨论】:

我应该在哪里使用这个功能?我会从什么事件中调用它?我不仅希望引用开始时间下拉控件,还希望能够在完全不同的函数中独立引用它,而无需首先进行用户交互。 如果我尝试在代码中独立设置开始时间,Start 属性会很棒,但我需要更改开始时间下拉列表中的选项,以便用户可以简单地选择他们想要的时间。

以上是关于Outlook 约会 - 如何更改开始时间下拉列表中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在outlook中发送定期的提醒邮件?例如每月一次或者每两周一次的邮件?

使用VBA创建Outlook事件(不是约会!)

VSTO Outlook 插件:当用户拖放定期约会时,无法在 Item_Change 事件中获取 AppointmentItem

Outlook VSTO - 当我调用约会.Display() 时如何显示“邀请与会者”文本框?

是否有 VBA 方法可以在 Outlook 中创建新日历(不是约会)

如何使用 Outlook 2013 在电子邮件中附加下拉选定字段数据