【问题标题】:how to late bind various applications in outlook如何后期绑定outlook中的各种应用
【发布时间】:2021-06-23 10:41:59
【问题描述】:

我有一个复杂的 vba 宏,它使用以下引用。我不知道如何将所有这些正确绑定到我使用的不同对象。如何研究什么是正确的后期绑定约定?

  • Outlook 16.0
  • Word 16.0
  • 正则表达式 5.5

例如,我在宏中使用早期绑定声明以下变量,如何找到等效的后期绑定约定?

  • 将 myNameSpace 调暗为 outlook.namespace --> 设置 myNameSpace = Application.GetNamespace("MAPI")
  • dim myInbox as outlook.folder --> 设置 myInbox = myNameSpace.Folders("文件夹名称")
  • 将 myItems 调暗为 outlook.items --> 设置 myItems = myInbox.Items
  • dim wrdDoc as word.document
  • dim regExp as new RegExp --> regExp.Pattern = "pattern"

任何帮助或指导将不胜感激!

谢谢!

【问题讨论】:

  • "...As Object" 在使用后期绑定时非常适合任何对象类型的变量。您还需要在代码中声明从这些库中使用的任何常量,或直接使用数值。
  • 对于 reg 表达式,我使用的是 matchcollection。我怎样才能找到设置该对象的正确方法?有什么地方可以参考以找出 createobject 的语法吗?
  • 你试过“作为对象”吗?那应该行得通。该类型没有“CreateObject”。
  • @TimWilliams ty,这很有帮助。当我将它们更新为对象时,我的大部分后续变量都会起作用。

标签: vba outlook


【解决方案1】:

当您从其他 Office 应用程序自动化 Outlook 并且不想保留对对象库的引用时,后期绑定很有意义。

当我们使用后期绑定时,我们不必为 VBA 项目添加引用。在这种情况下,您应该将所有 Outlook 特定对象声明为 Object

dim myNameSpace as Object
set myNameSpace = OutlookApplication.GetNamespace("MAPI")

使用CreateObject方法创建一个新的应用实例:

Set olApp = CreateObject("Outlook.Application")

这将使每台计算机从安装在其上的 Outlook 库创建 Outlook Application 对象。它避免了您在将分发的任何 Office 应用程序或解决方案中设置对 Outlook 对象库的显式引用(在分发之前从项目中删除该引用)。

【讨论】:

  • 谢谢你,这很清楚。我认为只需将对象添加到我的大多数变量中即可正确继承项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多