【问题标题】:User-defined type not defined for AppointmentItem in ExcelExcel 中未为 AppointmentItem 定义的用户定义类型
【发布时间】:2011-04-08 09:51:45
【问题描述】:

我将http://support.microsoft.com/kb/220595 的示例复制到 Excel 中的 VBA。

我的代码如下:

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim olAppt As Outlook.AppointmentItem
Set olAppt = olApp.CreateItem(olAppointmentItem)

我在Dim olAppt As Outlook.AppointmentItem 行收到以下错误: “未定义用户定义类型”。

应该如何解决这个问题?

我使用的是 MS Office 2003。

【问题讨论】:

    标签: vba ms-office


    【解决方案1】:

    该文章中列出了四个必备步骤。它们列在代码块之前。

    您可能忘记执行第二步,添加对 Outlook 对象库的引用
    唯一的区别是,在 VBA 中,菜单项位于 Tools 下,而不是 Project

    【讨论】:

    • 该示例使用后期绑定,这通常是一个好主意,因此添加对 Outlook 库的引用不是必需的,如果要分发解决方案也不是一个好主意。
    • @Remou 不是,不是。它不必要地混合了后期绑定 (CreateObject) 和早期绑定 (As Outlook.Application)。显然,早期绑定位获胜。是的,您可以通过将所有内容重新声明为 Object 来修复它,但这没有意义。您必须安装 Outlook 以使用它的对象模型,因此它也不会影响分发。
    • 你说得对,我没注意。但是,由于库版本之间的差异,我认为最好使用后期绑定。
    【解决方案2】:

    您需要通过值引用所有常量,因此,olAppointmentItem = 1 :

     Set olAppt = olApp.CreateItem(1)
    

    您可以查找值,例如http://msdn.microsoft.com/en-us/library/aa911356.aspx,或使用 Outlook 的对象浏览器来获取值。

    【讨论】:

    • 你的问题好像误会了
    • 问题是“应该如何解决这个问题?”我经常看到关于为什么“它可以在我的 PC 上工作但不能在我的同事上工作”的问题,这通常取决于每台 PC 上的不同库。使用后期绑定很容易解决问题。所以,在我看来,它应该通过使用后期绑定和常量值来解决。
    猜你喜欢
    • 2017-10-30
    • 2014-08-07
    • 2013-01-22
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多