Vba关闭excel应用程序/工作簿冻结

Vba关闭excel应用程序/工作簿冻结,vba,excel,excel-2010,Vba,Excel,Excel 2010,我对以下代码有问题: Dim excelapp as object set excelapp = CreateObject("excel.application") dim ws as object dim wb as Workbook wb= excelapp.Workbooks.Open(path) ws= wb.Sheets(1) 'in the code i send the worksheet object around by reference in order to read t

我对以下代码有问题:

Dim excelapp as object
set excelapp = CreateObject("excel.application")
dim ws as object
dim wb as Workbook

wb= excelapp.Workbooks.Open(path)
ws= wb.Sheets(1)
'in the code i send the worksheet object around by reference in order to read the
'worksheet and manipulate data, i dont create other instances of excel apps or
'workbooks
然后我尝试:

wb.Close
我也尝试过:

excelapp.Quit
两者都不起作用,它们都冻结并表示正在等待OLE操作,如果我不调用它们,我会打开多个excel进程。当我试图打开通过代码打开的excel文件时,我只能以只读方式打开它们,因为它们已签出给我

我还尝试执行一个shell脚本,关闭所有应用程序“Excel.Exe”,但它关闭了执行vba的实际Excel文件,因此这不是一个好的解决方案。
提前感谢。

可能是Excel应用程序检测到工作簿已更改,正在显示一个对话框(该对话框不可见,因为应用程序不可见)。尝试:


这会告诉Excel忽略对工作簿的任何更改。

是否从Excel运行此操作?如果是,则无需创建其他Excel实例来打开其他工作簿。好的,那么我将使用哪个对象?我尝试了应用程序,但它会打开实际的excel工作表,当我尝试APPLICATION.visible=false时,带有链接到我的方法的按钮的工作表将不可见。我把application.visible=true放在后面解决了这个问题,但它看起来有点草率,这是正确的方法吗?非常感谢。您可以在打开工作簿之前设置
Application.ScreenUpdate=False
,然后在完成后设置回True.genious!我会试试看,因为它说它在等待OLE操作,所以我假设它可能是用户响应,但我不知道必须让应用程序忽略它,我会试试!谢谢,在调试过程中,让excelapp.visible=true通常是值得的,这会让生活变得更轻松。另外,将excelapp定义为Excel.Application,然后设置excelapp=new Excel.Application。由于intellitype,应该使编码更容易一些。
wb.Close False