NormalEmail.dotm中的VBA宏

我有一个Word 2007模板,作为Normal.dotm使用,它具有企业主题,样式等,以及一小部分覆盖功能区上的项目符号和数字按钮默认行为的宏代码。

我现在想在Outlook 2007中创建电子邮件时使用这个相同的模板。我试着将我的Normal.dotm复制到NormalEmail.dotm,并在一定范围内工作,但是虽然我按下bullet /数字按钮在电子邮件编辑器中,它给出了一个错误:

运行时错误429:ActiveX组件无法创建对象

在进一步调查中,似乎我在我的宏中引用正常Word对象模型(应用程序,选择等)中的对象的任何操作都会导致此错误。 所以,即使我的宏包含以下内容,它仍然会失败:

MsgBox TypeName(Application)

我有一个暗示,这是因为我在Outlook的环境中运行,而不是Word,所以也许没有(Word)应用程序或任何与其关联的对象。 我知道Outlook中的电子邮件编辑器是Word,但不是我们所知道的Jim。

话虽如此,我确实发现ThisDocument返回一个有效的Document对象; 不幸的是,它对应于模板本身,而不是正在编辑的电子邮件。

通过试验和错误,我发现我可以通过以下迂回路线(显示电子邮件中的文本)获取与电子邮件相对应的文档:

MsgBox ThisDocument.MailEnvelope.Item.Application.ActiveInspector.WordEditor.Content.Text

但是,此代码似乎也会导致Outlook崩溃 - 而不是当时,但稍后关闭Outlook时。

在这一点上,我准备好承认失败。 毫无疑问,在Outlook中创建宏的“正确”方式是在Outlook中创建它们,但是从我有限的经验来看,这太糟糕了。 (您可以在VBA中创建宏,但不能部署它们;或者,您可以在VSTO中创建它们,但需要安装程序而不是简单地部署模板)。

所以。 任何想法都会让我做我希望做的一切?

  • 覆盖电子邮件编辑器中功能区上的项目符号/数字按钮的行为。
  • 在NormalEmail.dotm文件中部署宏,而不必“安装”它们。
  • 不会崩溃Outlook。

  • 您是否曾尝试将VBA编辑器中的引用添加到Microsoft Outlook对象库中?


    在Outlook 2007中,您可能还必须将VBA引用添加到“Microsoft Word 12.0对象库”,也可能是“Microsoft Forms 2.0对象库”。 不同的版本可能适用于其他版本年份。

    另外,在宏/代码中,您必须设置对象以获取/使用正确的方法和属性。

    我不是OO程序员,通常会从其他地方复制代码并根据需要进行修改,所以我不能比上面所说的更多。 (而且我的一个宏也给了我相同的429错误。)

    链接地址: http://www.djcxy.com/p/63755.html

    上一篇: VBA macro in NormalEmail.dotm

    下一篇: Microsoft Object Library compatibility between 2007 and 2003