使用VBA和自定义字段优化Outlook体验

Outlook是一个功能强大的电子邮件客户端,但很多人不知道它可以通过VBA(Visual Basic for Applications)进行深度定制,以满足特定的工作需求。自定义字段(User Defined Fields,简称UDF)是Outlook中一个强大的功能,可以帮助用户跟踪和管理电子邮件请求。本文将介绍如何利用VBA和UDF来提升Outlook使用体验,将其打造成一个高效的请求处理工具。

虽然不是专业的程序员,但通过自学和实践,在过去几年中积累了不少VBA编程知识。这篇文章是和同事们日常工作中使用的一些代码的集合,以及对这些代码的改进和发展。

假设

在阅读本文之前,假设已经具备以下条件:

  • 已经接触过VBA或Visual Basic。
  • 曾经使用过Microsoft Outlook。
  • 需要在邮箱中添加更多的静态或动态字段。

基础

为了更好地利用将要创建的宏,最好将这些功能“触手可及”,而不是每次都使用Alt+F8来运行宏。创建工具栏并将宏添加到工具栏后,可以通过单击来使用它们。

要了解如何创建工具栏并将宏添加到工具栏,请参考以下链接:

要将宏添加到刚刚创建的工具栏,只需从类别中选择宏选项,然后将项目拖放到工具栏上。

自定义字段(UDF)是可以在Outlook中创建的额外字段,然后将其拖放到邮箱中,以存储需要的额外信息。这些可以是公司名称、用户ID、成本等。

Outlook内置了相当多的字段,可以通过右键点击邮箱标题栏并选择字段选择器来添加它们。这将给一个工具箱,可以从中拖放项目到邮箱中。

要深入了解自定义字段,请访问以下链接:

下一步

添加字段后,可以设置Outlook使这些字段在点击时可编辑,但发现这种方式不太方便,甚至看起来不太美观。因此,将使用工具栏和宏来管理这些字段。

将使用一个简单的宏来实现所需的结果。将向展示一个简单的例子。

使用代码

现在已经熟悉了UDF和优化选项,让直接跳到代码部分。为了使代码工作,需要添加对Microsoft Forms 2.0 Object Library的引用。

可以通过在Outlook中打开Visual Basic编辑器(Alt+F11)来做到这一点。使用项目资源管理器添加一个模块到项目中。双击模块。现在转到工具 - 引用,并搜索引用,然后在它旁边的复选框中打勾,或者浏览以找到FM20.dll。

完成上述步骤后,可以开始编写代码,首先创建一个子程序:

Sub CustomerID(Optional ByVal Value As String, Optional ByVal IsCustomEntry As Boolean = False) Dim i As Long Dim myCollection As Object Dim msg As Outlook.MailItem Dim objProperty As Outlook.UserProperty Dim UserDefinedFieldName As String Set myCollection = Outlook.Application.ActiveExplorer.Selection UserDefinedFieldName = "CustomerID" If IsCustomEntry = False Then If Not myCollection Is Nothing Then For i = 1 To myCollection.Count Set msg = myCollection.Item(i) Set objProperty = msg.UserProperties.Add(UserDefinedFieldName, Outlook.OlUserPropertyType.olTExt) objProperty.Value = Value msg.Save Next i End If ElseIf IsCustomEntry = True Then Value = InputBox("Please enter custom value", "Input custom field value") If Not myCollection Is Nothing Then For i = 1 To myCollection.Count Set msg = myCollection.Item(i) Set objProperty = msg.UserProperties.Add(UserDefinedFieldName, Outlook.OlUserPropertyType.olTExt) objProperty.Value = Value msg.Save Next i End If End If End Sub

这是整个代码,没有中断。

要点

请不要忘记添加引用...它会给出一个烦人的错误消息,这无助于识别问题。可能还可以在宏中添加一些错误处理,以防尝试编辑非邮件项目的UDF,比如日历邀请或任务。认为最简单的解决方案是:

On Error Resume Next

这是一个足够的解决方案,使行跳到下一个项目,或者也可以添加一个决策树,检查myCollection.Item(i)是否是MailItem。

结束语

如果巧妙地使用这些技巧,它可以帮助生活变得更轻松,比如在Outlook中创建一个下拉菜单,列出最常见的UDF及其值,这样就可以比以前更好地管理电子邮件。

UDF也可以作为分组标准。可以设置一个UDF为MSGSTATUS,并添加值,例如:Active, Pending, Non-Action,然后设置Outlook根据MSGSTATUS字段对电子邮件进行分组。

甚至不需要UDF可见,Outlook仍然会根据它的值进行分组!

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485