在使用循环打开文件路径中的所有excel文件后,是否可以通过vba创建工作簿变量来引用这些文件?

在使用循环打开文件路径中的所有excel文件后,是否可以通过vba创建工作簿变量来引用这些文件?,vba,excel,Vba,Excel,我查看了几个其他论坛,发现您可以通过首先打开其他工作簿,然后创建一个变量并将其设置为打开的工作簿来引用它们,如上面代码第二段中所列 当我试图想出一种方法来为这个特定文件路径中的所有文件创建引用变量时,我意识到我无法在运行时动态命名不同的变量,从而将每个工作簿设置为不同的工作簿变量 那么,除了完成我试图完成的任务之外,还有其他方法吗?或者有没有一种方法可以动态创建变量?下面是如何操作的:这将以新名称作为模板打开它 Dim MyFolder As String Dim MyFile As Strin

我查看了几个其他论坛,发现您可以通过首先打开其他工作簿,然后创建一个变量并将其设置为打开的工作簿来引用它们,如上面代码第二段中所列

当我试图想出一种方法来为这个特定文件路径中的所有文件创建引用变量时,我意识到我无法在运行时动态命名不同的变量,从而将每个工作簿设置为不同的工作簿变量


那么,除了完成我试图完成的任务之外,还有其他方法吗?或者有没有一种方法可以动态创建变量?

下面是如何操作的:这将以新名称作为模板打开它

Dim MyFolder As String
Dim MyFile As String
MyFolder = "C:--"
(leaving out the file path)
MyFile = Dir(MyFolder & "\*.xlsx")

Do While MyFile <> ""
    Workbooks.Open fileName:=MyFolder & "\" & MyFile
    MyFile = Dir
Loop

(see paragraph below)

Workbook.Open
Dim wbk1 as workbook
Set wbk1 = ActiveWorkbook
(can reference workbook like this)
wbk1.Activate
或者:如果工作簿已打开,则此操作将失败。如果以后需要保存,请使用此操作

Dim wb1 as Workbook
Set wb1 = Workbooks.Add(MyFile)
然后,可以创建如下所示的工作表对象:

Dim wb1 as Workbook
Set wb1 = Workbooks.Open(MyFile)
Dim ws1 as Worksheet
Set ws1 = wb1.Worksheets(1)
然后,无论何时您想要引用该工作表上的某个内容,如范围或单元格,请确保使用工作表引用对其进行限定,如下所示:

Dim wb1 as Workbook
Set wb1 = Workbooks.Open(MyFile)
Dim ws1 as Worksheet
Set ws1 = wb1.Worksheets(1)

您可以使用数组、集合或字典来保存对多个工作簿的引用。 最好打开一个工作簿,执行所需操作,关闭它,然后使用相同的变量打开下一个工作簿

注意:要在变量中正确存储工作簿,请使用@brax提供的代码

但是。。。这就是你想要的:

这段代码将打开文件夹中的每个工作簿,然后返回关于每个工作簿的信息

Dim rng as Range
Set rng = ws1.Range("A1:B1")

谢谢你的解决方案。我觉得你可能是对的,一次打开一个变量,使用一个变量,然后关闭它更有效。这就是我要做的!这是否允许我将工作手册作为图纸参考?至少通过索引号更新了我的答案,为您提供了参考资料。