如何在VBA中引用另一个(打开或关闭的)工作簿并将值向后拉Excel 2007

如何在VBA中引用另一个(打开或关闭的)工作簿并将值向后拉Excel 2007,vba,excel,Vba,Excel,基本上,我需要从另一个工作簿中收集一些数据(可以通过一个用户表单找到并打开,因此位置和名称是可变的)。我需要使用VBA进行此操作,因为我还需要用此数据填充图表。我宁愿不必打开其他工作簿来完成它,但如果它更容易,那么就可以了 UserForm已经完成并且运行良好,我有填充图表所需的代码,但是我无法让VBA从其他工作簿中提取数据并将其分配给我需要的变量 关于如何让VBA做这件事有什么想法吗?非常感谢。如果您想访问文件中的数据,必须以某种方式打开文件。显然,一种方法是在Excel应用程序实例中打开它,

基本上,我需要从另一个工作簿中收集一些数据(可以通过一个用户表单找到并打开,因此位置和名称是可变的)。我需要使用VBA进行此操作,因为我还需要用此数据填充图表。我宁愿不必打开其他工作簿来完成它,但如果它更容易,那么就可以了

UserForm已经完成并且运行良好,我有填充图表所需的代码,但是我无法让VBA从其他工作簿中提取数据并将其分配给我需要的变量


关于如何让VBA做这件事有什么想法吗?非常感谢。

如果您想访问文件中的数据,必须以某种方式打开文件。显然,一种方法是在Excel应用程序实例中打开它,例如:-

(未测试代码)

另一种方法是使用Excel ADODB提供程序打开与文件的连接,然后使用SQL从所需的工作表中选择数据,但由于您仍然在Excel中工作,我认为没有任何理由这样做,而不仅仅是打开工作簿。请注意,Workbooks.Open()方法有一些可选参数,用于以只读方式打开工作簿等

Dim wbk As Workbook
Set wbk = Workbooks.Open("C:\myworkbook.xls")

' now you can manipulate the data in the workbook anyway you want, e.g. '

Dim x As Variant
x = wbk.Worksheets("Sheet1").Range("A6").Value

Call wbk.Worksheets("Sheet2").Range("A1:G100").Copy
Call ThisWorbook.Worksheets("Target").Range("A1").PasteSpecial(xlPasteValues)
Application.CutCopyMode = False

' etc '

Call wbk.Close(False)