我是用execel里面的vb编辑器编写的程序,如何讲里面的窗体和模块 生成exe文件,请大家帮忙。

解决方案 »

  1.   

    第一步:先用VB创建所有的窗体。第二步:把代码移植过来。但所有的关于工作薄的操作,都要用相应的 Excel.Application 对象及 Excel.Application的子对象来调用相应的过程或函数。
      

  2.   

    我是这么做的,不过,excel版本不同,就会错误。
    把excel中的窗体和模块导出,然后再vb中再导入,再引入excel库,我用的是excel2003,所以库版本是11
    但是,在excel2000中就不能用了,能否判断计算机中excel中的版本,然后再引入库呢 ? 
      

  3.   

    是这样的吗?
    我用 Office 2003 / Excel 写的 VBA 代码(操作系统 Windows XP / SP1),在 Office 2000 / Excel 下完全正常使用(操作系统 Windows 98)。我觉得不应该出现你说的现象吧。
      

  4.   

    还有,你在 Excel/VBA 中把窗体导出,在 VB 中恐怕不能导入吧?
    我发现 VB 和 VBA 中,它们的 .frm 和 .frx 的格式不太一样啊。
      

  5.   

    我在Win98下写的 VBA 代码,在 Win98 / Win2K / Win XP / Vista 这几个系统中都能正常运行的。
      

  6.   

    楼主可以在VB中同时添加EXCEL2000和Excel2003的引用。
      

  7.   


    使用到了相应的对象,可以改为动态调用的办法.如下: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资料采集程序里就是这么做的.当目标机器不存在相应的对象时,还可以给出错误提示,比较友好.但是后期绑定,效率是不如前期绑定了~~不过在这样的应用里面,效率不是主要矛盾.
      

  8.   

    很简单啊,就写多个错误捕捉就行了....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
      

  9.   

    set objxls=createobject("Excel.Application1")   '这里的不同版本对象的字符串不同,才可以这么写据我所知,Office 2000 / Office 2003 是一样的(应该跟ADO没关系),估计不会有变化。这样就行了:
    set objxls=createobject("Excel.Application")