我在Win98下写的 VBA 代码,在 Win98 / Win2K / Win XP / Vista 这几个系统中都能正常运行的。
楼主可以在VB中同时添加EXCEL2000和Excel2003的引用。
使用到了相应的对象,可以改为动态调用的办法.如下:private function GetExcelObject() as object on error goto ErrHandle dim ObjXls as object set objxls=createobject("Excel.Application") set GetExcelObject=objxls errhandle: end function可以在里面使用多个对象版本的分支,再用返回值返回成功建立的对象的版本,同时用一个BYREF的参数返回对象本身.我在以前给别人写的一个EXCEL资料采集程序里就是这么做的.当目标机器不存在相应的对象时,还可以给出错误提示,比较友好.但是后期绑定,效率是不如前期绑定了~~不过在这样的应用里面,效率不是主要矛盾.
很简单啊,就写多个错误捕捉就行了....private function GetExcelObject(byref outObject as object) as long dim ObjXls as object on error goto Err1 set objxls=createobject("Excel.Application1") '这里的不同版本对象的字符串不同,才可以这么写 set outObject=objxls GetExcelObject=1 exit function err1: on error goto Err2 set objxls=createobject("Excel.Application2") '比如不同的ADO版本,有些2.5,有些2.7 set outObject=objxls GetExcelObject=2 exit function err2: end function
set objxls=createobject("Excel.Application1") '这里的不同版本对象的字符串不同,才可以这么写据我所知,Office 2000 / Office 2003 是一样的(应该跟ADO没关系),估计不会有变化。这样就行了: set objxls=createobject("Excel.Application")
把excel中的窗体和模块导出,然后再vb中再导入,再引入excel库,我用的是excel2003,所以库版本是11
但是,在excel2000中就不能用了,能否判断计算机中excel中的版本,然后再引入库呢 ?
我用 Office 2003 / Excel 写的 VBA 代码(操作系统 Windows XP / SP1),在 Office 2000 / Excel 下完全正常使用(操作系统 Windows 98)。我觉得不应该出现你说的现象吧。
我发现 VB 和 VBA 中,它们的 .frm 和 .frx 的格式不太一样啊。
使用到了相应的对象,可以改为动态调用的办法.如下:private function GetExcelObject() as object
on error goto ErrHandle dim ObjXls as object set objxls=createobject("Excel.Application")
set GetExcelObject=objxls
errhandle:
end function可以在里面使用多个对象版本的分支,再用返回值返回成功建立的对象的版本,同时用一个BYREF的参数返回对象本身.我在以前给别人写的一个EXCEL资料采集程序里就是这么做的.当目标机器不存在相应的对象时,还可以给出错误提示,比较友好.但是后期绑定,效率是不如前期绑定了~~不过在这样的应用里面,效率不是主要矛盾.
dim ObjXls as object on error goto Err1 set objxls=createobject("Excel.Application1") '这里的不同版本对象的字符串不同,才可以这么写
set outObject=objxls
GetExcelObject=1 exit function
err1:
on error goto Err2 set objxls=createobject("Excel.Application2") '比如不同的ADO版本,有些2.5,有些2.7
set outObject=objxls
GetExcelObject=2 exit function
err2:
end function
set objxls=createobject("Excel.Application")