【发布时间】:2017-03-28 01:25:50
【问题描述】:
我在“最终文件夹”中有 6 个 Excel 文件。我需要依次打开每个,从运行代码的工作簿中放入一些数据(我使用 ThisWorkbook 作为源代码)。
代码将所有 6 个文件一起打开,而不是依次打开。
似乎在循环中运行Workbooks.Open时,默认打开所有文件。
Sub PopulateFinalFile()
Dim filpath As String
Dim fso As Scripting.FileSystemObject
Dim fil As Scripting.File
Dim fldr As Scripting.Folder
filpath = "C:\Users\deepak.ved\Desktop\Reports\Final Reports"
Set fso = New Scripting.FileSystemObject
Set fldr = fso.GetFolder(filpath)
For Each fil In fldr.Files
Application.Workbooks.Open (fso.GetFile(fil.Path))
Next fil
End Sub
不相关的问题:如何使用 FSO 指向工作簿。就像我使用getfile 或folder.files 一样,它会返回一个路径。当我传递工作簿的路径时,我需要有 workbook.open(path) 但我只想指向该工作簿而不是打开它。
【问题讨论】:
-
如果你打开多个文件,你需要在你的工作簿中使用MultiSelect。打开代码:
Application.Workbooks.Open(fso.GetFile(fil.path), MultiSelect:=True)。此外,当您使用 MultiSelect 时,文件的顺序不再保留,因此您需要提供循环。试试这个帖子寻求帮助 [链接] (stackoverflow.com/questions/25180061/…) -
嗨,Jiri,感谢您的快速回复。我会检查这个并让你知道它是否有效:)
-
创建一个工作簿变量,比如
wb,然后在主循环中有Set wb = Application.Workbooks.Open (fso.GetFile(fil.Path))。仍在该循环的主体中,处理wb,然后关闭它。这样,目录中的工作簿将按顺序处理,这似乎是您想要的。这个问题可能会有所帮助:stackoverflow.com/q/5851531/4996248 -
嘿,我在之前尝试解决问题时尝试了 WB 变量方法,但它似乎返回相同的错误。
-
对于 Application.workbooks.open 语法,我没有得到多选选项。它反映为语法错误(以红色突出显示)。我正在运行 Windows 8 Office 2013