Vba参考工作簿通过path

我正在做一个macros是Excel 2016,并希望通过它的path参考工作簿,而无需打开它。

这是我目前所做的

Dim Wb As Workbook Dim Path As String Dim Fd As FileDialog Set Fd = Application.FileDialog(msoFileDialogOpen) Fd.AllowMultiSelect = False Fd.Show Path = Fd.SelectedItems(1) Set Wb = Workbooks.Open(Path) 

但是,最后一行打开文件。

我想知道如何将Wb设置为path所在的工作簿,而不打开它。

我只需要引用该工作簿,以便稍后可以从其单元中检索一些数据。 无法将工作簿对象存储在Wb中,该工作簿是path导致的工作簿?

不。 直到Excel中打开一个文件,它不是一个工作簿,即使你和我可能认为一个工作簿,事实并非如此。 这只是一个文件。 但是,您可以从封闭的工作簿中获取数据。

有几种方法可以做到这一点(可能还有其他方法):

  1. 对于less量的数据,请使用ExecuteExcel4Macro方法。
  2. 对于大量的数据,请使用ADO查询工作簿。
  3. 对于简单的解决scheme,只需打开文件并保持不可见。

我将介绍最简单的方法,即在Excel的新实例中隐式打开它。 这只比在Excel的相同实例中明显地打开它复杂一点。 您只需要创build一个新的Excel实例,将其.Visible属性设置为False ,然后在实例中打开该文件。

 Dim Wb As Workbook Dim xlApp as Excel.Application Dim Path As String Dim Fd As FileDialog Set Fd = Application.FileDialog(msoFileDialogOpen) Fd.AllowMultiSelect = False Fd.Show If Fd.SelectedItems > 0 Then Path = Fd.SelectedItems(1) Else MsgBox "Nothing selected!" Exit Sub End If '## Create new instance of excel, and make it invisible Set xlApp = New Excel.Application xlApp.Visible = False '## Open your workbook in this new instance ' I use ReadOnly:=True to prevent conflict if the file is already open elsewhere Set Wb = xlApp.Workbooks.Open(Path, ReadOnly:=True) 

确保在过程结束时执行此操作,closures工作簿并退出新的/不可见的Excel实例:

 Wb.Close xlApp.Quit