2010-09-05 73 views
0

我将示例http://support.microsoft.com/kb/220595复制到Excel中的VBA。未在Excel中为AppointmentItem定义的用户定义类型

我的代码如下:

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的

回答

1

有一些文章中上市的4个先决步骤。它们在代码块之前列出。

您可能忘了按照第二步,添加对Outlook对象库的引用。
唯一的区别是,在VBA菜单项是Tools而不是Project

+0

该示例使用后期绑定,这通常是一个好主意,因此添加对Outlook库的引用不是必需的,如果要分发解决方案,也不是一个好主意。 – Fionnuala 2010-09-05 10:11:29

+0

@Remou并非如此。它使用了不必要的后期绑定('CreateObject')和早期绑定('As Outlook.Application')的混合。显然,早期绑定位赢了。是的,您可以通过将所有内容重新声明为“Object”来修复它,但这没有任何意义。你*有*安装Outlook使用它的对象模型,所以它也不会影响分配。 – GSerg 2010-09-05 13:13:39

+0

你说得对,我没注意。但是,我认为最好使用后期绑定,因为库版本之间存在差异。 – Fionnuala 2010-09-05 17:39:23

0

您需要通过他们的价值是指所有常数,因此,作为olAppointmentItem = 1:

Set olAppt = olApp.CreateItem(1) 

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

+0

看起来你误解了问题 – sergtk 2010-09-05 18:16:22

+0

问题是“应该如何解决?”我经常看到关于为什么“它在我的电脑上运行,但在我的同事中运行”的问题,而这通常是由每台电脑上的不同库引起的。用晚期绑定来解决问题是很容易的。所以,在我看来,它应该通过使用迟绑定和常量值来解决。 – Fionnuala 2010-09-05 19:16:06

+0

谢谢!现在很清楚 – sergtk 2010-09-07 15:21:55

相关问题