Excel vba,打开新的应用程序:Microsoft Excel正在等待另一个应用程序来完成一个OLE操作
我有以下vba代码。 它创build新的Excel应用程序并使用它来打开文件。 然后MsgBox在这个文件中的一些单元格的值。
Sub TestInvis() Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") Dim WB As Workbook Set WB = ExcelApp.Application.Workbooks.Open("Y:\vba\test_reserves\test_data\0503317-3_FO_001-2582480.XLS") Dim title As String title = WB.Worksheets(1).Cells(5, 4).Value MsgBox (title) WB.Save WB.Close ExcelApp.Quit Set ExcelApp = Nothing End Sub
问题是MsgBoxing后,它减慢,并最终使Microsoft Excel is waiting for another application to complete an OLE action
窗口。 为什么这样做? 这不像是有任何硬命令正在执行。 我该如何处理呢?
发生这种情况是因为ExcelApp
的Excel实例很可能正在等待用户input。
您可以尝试添加ExcelApp.DisplayAlerts = False
以跳过可能存在的任何popup窗口。
而且,在排除故障的同时添加ExcelApp.Visible = True
以便您可以在第二个实例中查看发生了什么,并在那里排除故障。
我在以下情况遇到这个问题:
- 警报已由应用程序实例打开,正在等待用户input。
- 在打开一个文件的时候,当文件被打开以及是否打开保存的版本或者内存版本的时候(当然这应该发生在
msgBox
之前) - 如果您多次运行代码并崩溃,则可能会将该文件打开为只读状态,因为还有另一个隐藏的Excel实例将其locking(请检查您的任务pipe理器以了解其他Excel进程)
请放心,无论如何,问题不在于你的代码本身 – 它在这里运行良好。
代码适合我。
您可以从FileDialog中select文件。 在注释中您拥有closures工作簿而不保存更改的代码。 希望能帮助到你。
Option Explicit Sub Import(Control As IRibbonControl) Dim fPath As Variant Dim WB As Workbook Dim CW As Workbook On Error GoTo ErrorHandl Set CW = Application.ActiveWorkbook fPath = Application.GetOpenFilename(FileFilter:="Excel file, *.xl; *.xlsx; *.xlsm; *.xlsb; *.xlam; *.xltx; *.xls; *.xlt ", Title:="Choose file You want to openn") If fPath = False Then Exit Sub Application.ScreenUpdating = False Set WB = Workbooks.Open(FileName:=fPath, UpdateLinks:=0, IgnoreReadOnlyRecommended:=True) Set WB = ActiveWorkbook MsgBox("File was opened.") 'Application.DisplayAlerts = False 'WB.Close SaveChanges:=False 'Application.DisplayAlerts = True 'MsgBox ("File was closed") Exit Sub ErrorHandl: MsgBox ("Error occured. It is probable that the file that You want to open is already opened.") Exit Sub End Sub