Ms access vba访问-检查excel文件是否打开

Ms access vba访问-检查excel文件是否打开,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,使用VBA访问,我试图编辑以下代码。所以它首先检查excel文件是否打开,如果已经打开,则等待文件关闭,然后恢复代码?这需要为每个文件1、2、3执行 检查excel文件是否打开 如果打开等待(暂停)直到关闭,则恢复代码(刷新表、保存、关闭) 对下一个文件重复此过程 Function RefreshExcelTables() Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") Exce

使用VBA访问,我试图编辑以下代码。所以它首先检查excel文件是否打开,如果已经打开,则等待文件关闭,然后恢复代码?这需要为每个文件1、2、3执行

  • 检查excel文件是否打开
  • 如果打开等待(暂停)直到关闭,则恢复代码(刷新表、保存、关闭)
  • 对下一个文件重复此过程

      Function RefreshExcelTables()
    
      Dim ExcelApp As Object
    
      Set ExcelApp = CreateObject("Excel.Application")
    
      ExcelApp.workbooks.Open "c:\test\Test_Sheet1.xlsb"
      ExcelApp.ActiveWorkbook.refreshall
      ExcelApp.ActiveWorkbook.Save
      ExcelApp.ActiveWindow.Close
    
    
      ExcelApp.workbooks.Open "c:\test\Test_Sheet2.xlsb"
      ExcelApp.ActiveWorkbook.refreshall
      ExcelApp.ActiveWorkbook.Save
      ExcelApp.ActiveWindow.Close
    
    
      ExcelApp.workbooks.Open "c:\test\Test_Sheet3.xlsb"
      ExcelApp.ActiveWorkbook.refreshall
      ExcelApp.ActiveWorkbook.Save
      ExcelApp.ActiveWindow.Close
    
    
      Set ExcelApp = Nothing
    
    
      End Function
    
  • 在Outlook中测试

    Sub Test()
    
    Dim ExcelApp As Object
    Dim X, X1
    
    X = Array("c:\test\Test_Sheet1.xlsb", "c:\test\Test_Sheet2.xlsb")
    
    For Each X1 In X
        On Error Resume Next
        Set ExcelApp = GetObject(X1).Application
        On Error GoTo 0
    
        If Not ExcelApp Is Nothing Then
            With ExcelApp.Workbooks(Right$(X1, Len(X1) - InStrRev(X1, "\")))
                .RefreshAll
                .Save
                .Close
        End With
        Set ExcelApp = Nothing
        End If
    
    Next X1
    End Sub
    

    我尝试了你的代码,但不断得到运行时错误9,在线超出范围---使用ExcelApp.Workbook(右$(X1,Len(X1)-instrev(X1,“\”))