您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



为何复制excel的工作表后,excel的进程就关不掉啊?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


为何复制excel的工作表后,excel的进程就关不掉啊?
发表于:2008-01-17 11:15:24 楼主
                                set       osheet       =       obook.sheets("sheet2")  
                                osheet.copy       after:=sheets(2)          

                                obook.close       (false)  
                                set       osheet       =       nothing  
                                set       obook       =       nothing  
                                oexcel.quit  
                                set       oexcel       =       nothing  


把osheet.copy       after:=sheets(2)删除后运行,进程里就没有excel了,为什么啊?  

如何解决?  
谢谢!
发表于:2008-01-17 11:36:451楼 得分:0
在oexcel.quit之前加入如下代码
'xlautoopen=1;xlautoclose=2
obook.runautomacros   (1)   '运行excel启动宏
obook.runautomacros   (2)   '运行excel关闭宏
发表于:2008-01-17 18:49:522楼 得分:0
加入以上代码没有用啊~~

完整代码如下,大家看看帮帮忙,就复制了个工作表,怎么就常驻进程关不掉了呢

private   sub   command1_click()
        dim   pageall,   pageone   as   integer
        dim   oexcel   as   excel.application
        dim   obook   as   excel.workbook
        dim   osheet   as   excel.worksheet
       
        set   oexcel   =   createobject("excel.application")
        set   obook   =   oexcel.workbooks.open("c:\book1.xls")
        set   osheet   =   obook.worksheets("sheet2")


        osheet.copy   after:=sheets(2)


        obook.close   (false)
        set   osheet   =   nothing
        set   obook   =   nothing
        oexcel.quit
        set   oexcel   =   nothing
       
end   sub
发表于:2008-01-18 09:32:523楼 得分:0
还真是,我原来只操作单一sheet的时候,用上述的代码执行完毕后可以自动关闭进程的

实际试验了下你的这个,确实不行,关注中
发表于:2008-01-22 19:56:314楼 得分:0
是啊,有谁知道啊
发表于:2008-01-23 18:57:495楼 得分:0
osheet.copy       after:=sheets(2)

改成:
osheet.copy       after:=obook.worksheets(2)

就行了

在vb中调用vba时,尽量不用到active类似的对象,如activebook,activesheet,等
你代码中用到了sheets前面没有定义,它默认引用了activebook.worksheets对象引起进程没有关闭

以上是我自已在工作中遇到一些问题总结出来的,也不知道对不对,仅供参考


快速检索

最新资讯
热门点击