回 帖 发 新 帖 刷新版面

主题:[讨论]奇怪! VB不能退出EXCEL进程

下面这段代码不知道有什么问题,运行完,EXCEL进程并没有退出,非要关闭我的程序才退出。

如果我不退出程序,再次执行这段代码,就会报错:

实时错误(91):对象变量或With块变量未设置。

Private Sub Command6_Click()
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    
    Dim i As Integer
    i = 1

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False

    Set xlBook = xlApp.Workbooks.Open("D:\test.xls")
    Set xlSheet = xlBook.Worksheets(1)
    
    Do While i <= ActiveSheet.UsedRange.Rows.Count '[color=800080]将这句中的条件改成 i <= 5 这可以退出[/color]
        MsgBox xlSheet.Cells(i, 1)
        i = i + 1
    Loop
        
    Set xlSheet = Nothing
    xlBook.Close
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Sub  

请高手们帮忙看看是哪出了问题啊
ActiveSheet.UsedRange.Rows.Count 有什么要释放的吗

回复列表 (共7个回复)

沙发

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

就可以了

板凳

谢谢楼上兄弟的回复。

不过还是不行,任务管理器中的EXCEL进程还是存在

仍旧只能退出程序再运行

3 楼

这种情况不是太好解决,程序看似没问题,但实际情况常常发生,我也有同样的问题,很无奈,不知道通过判断excel进程去关掉它是否可行,本人不具备这样的能力,希望高手解决。

4 楼

    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    'Dim xlApp, xlBook, xlSheet
    
    Dim i As Integer
    i = 1

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False

    Set xlBook = xlApp.Workbooks.Open("D:\test.xls")
    Set xlSheet = xlBook.Worksheets(1)
    
    Do While i <= xlSheet.UsedRange.Rows.Count '将这句中的条件改成 i <= 5 这可以退出
        MsgBox xlSheet.Cells(i, 1)
        i = i + 1
    Loop
        
    'Set xlSheet = Nothing '就怎么个注释符就怎么难吗?
    xlBook.Close
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

5 楼

哈哈,终于找到根源了

Do While i <= xlSheet.UsedRange.Rows.Count

这句用 xlsheet 不要用ActiveSheet.

楼上的写对了.
那句话不用注释.

6 楼

MsgBox xlSheet.Cells(i, 1)
想看值的话,可以用debug.print,要是来他个几百回也没问题。
  debug.print xlSheet.Cells(i, 1)

7 楼

5楼正解。

4楼的那个注释可有可无。个人认为还是写上比较好吧。

6楼兄弟说的对,不过我只是测试用了个MSGBOX,并不真的需要。

谢谢大家的帮助了

不过不知道是什么原因呢?为什么用ActiveSheet不行呢??

了解情况的兄弟说说啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册