明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1625|回复: 5

定义excel类型问题

[复制链接]
发表于 2008-6-17 23:57:00 | 显示全部楼层 |阅读模式

在VBA中定义变量如下:

    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet

但编译的时候老是说用户定义类型未定义,是怎么回事呢?

发表于 2008-6-18 09:03:00 | 显示全部楼层
本帖最后由 作者 于 2008-6-18 10:06:33 编辑

LZ,请在引用中选择“Microsoft Excel 11.0 object library”,如果没有这一项,请选择相关的microsoft excel library的引用。

如图:

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2008-6-18 09:27:00 | 显示全部楼层
另外,为适用于不同版本的Excel,建议采用后绑定!
发表于 2008-6-18 10:07:00 | 显示全部楼层

同意LS的观点

 楼主| 发表于 2008-6-18 14:01:00 | 显示全部楼层
怎么样才能绑定呢
 楼主| 发表于 2008-6-19 09:23:00 | 显示全部楼层

在网上找了一些dd,发上来希望对有同样问题的兄弟有所帮助

两种表示方法:

1、先期绑定:

引用:Microsoft Excel 10.0 Object Library(10.0xp的版本号,20009.0以次类推)

声明:

声明对象:

dim xlapp as Excel.Application’声明对象,也可以使用dim xlapp as New Excel.Application

dim xlwb as Excel.Workbook

dim xlsht as Excel.Worksheet

使用对象

创建excel的新实例的方法

set xlapp=new excel.application

如果使用dim xlapp as New Excel.Application的声明方法是在第一次引用该变量时将新建该对象的实例,因此不必使用 set 语句来给该对象引用赋值。创建好EXCEL实例后就可以使用EXCEL的属性、对象、类型、方法了。

声明触发事件的对象:

dim withevents xlapp as Excel.Application

注意声明触发事件的对象只能在类模块里,比如在VB里创建的类模块、外接程序设计器等。声明好后就可以使用excel事件了,如:

Private Sub xlapp_NewWorkbook(ByVal Wb As Excel.Workbook)

’…

End Sub

Private Sub xlapp_WorkbookOpen(ByVal Wb As Excel.Workbook)

’…

End Sub

2、后期绑定

引用:不需要

声明:

声明对象

dim xlapp as object

dim xlwb as object

dim xlsht as object

使用对象:

set xlapp=getobject(,”Excel.Application”)’获得一个已经存在的EXCEL实例

set xlapp=createobject(“Excel.Application”)’创建一个新的EXCEL实例

然后就可以使用EXCEL了。

后期绑定不能声明触发事件的EXCEL对象实例。

后期绑定不能直接使用EXCEL的常数、对象、以及对象属性,需要声明后才能正常使用,这点需要仔细注意。

3、变量的声明范围:

声明范围可以是public 也可以是 Private。就看使用范围了。

4、混合使用:

使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行。要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID。例如,可以声明并创建下列 Microsoft Excel 引用:

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。

5、开发帮助

如果是前期绑定,尽量在低版本的EXCEL上开发,否则在低版本的环境下运行会出现一些不可预见的问题。

Private xlApp As Excel.Application '可以在模块或类模块里声明

Private xlWb As Excel.Workbook'可以在模块或类模块里声明

Private xlShtA As Excel.Worksheet'可以在模块或类模块里声明

Private WithEvents exlEvent As Excel.Application'只能在类模块里声明

public xlApp as new GetObject(, "Excel.Application")'错误的声明方式

public xlWb as new xlApp.ActiveWorkbook'错误的声明方式

pubic xlShtA as new xlWb.ActiveSheet '错误的声明方式

Private xlApp As Excel.Application '可以在模块或类模块里声明

Private xlWb As Excel.Workbook'可以在模块或类模块里声明

Private xlShtA As Excel.Worksheet'可以在模块或类模块里声明

Private WithEvents exlEvent As Excel.Application'只能在类模块里声明

public xlApp as new GetObject(, "Excel.Application")'错误的声明方式

public xlWb as new xlApp.ActiveWorkbook'错误的声明方式

pubic xlShtA as new xlWb.ActiveSheet '错误的声明方式

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 09:36 , Processed in 0.184432 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表