用循环打开文件夹中的文件

时间:2016-06-22 18:21:48

标签: vba excel-vba excel

我正在尝试从文件夹中打开excel文件,并将详细信息复制并粘贴到主文件夹中。在每个第一级文件夹中,有一些.xlsm文件可供打开,但在第一级文件夹中的第二级文件夹中也有一些(所以额外的\ filepath)。

现在,我正在试图弄清楚如何遍历第一级文件夹并打开“松散”工作簿(第一级文件夹中不在二级文件夹中的文件)。

这就是我所拥有的。请注意我最终会添加另一个“级别”的文件夹,因此存在大量变量:

Sub Compile_RFQ_Parts()

Dim RFQ_Ecoat As String 'file path for RFQ folder in ecoat folder
Dim RFQ_VendorFolder As String  'file path for specific vendor
Dim RFQ_FileFolder As String    'file path for RFQ folder within a vendor folder
Dim RFQ_File As String  'file within RFQ #### style folder in vendor folder
Dim RFQ_FileLooseVendor As String 'loose file in vendor folder
Dim RFQ_FileLooseEcoat As String    'loose file in ecoat RFQ folder
Dim RFQ_Num As String   'Number of RFQ from formula
Dim DumpLocation As String  'Bulk workbook
Dim DumpSheet As String     'Target sheet in bulk workbook
Dim NextOpenCellRow As Integer 'next open cell at the dump location
Dim RFQcell As Range  'counter for each cell in "part number" range in RFQ file
Dim RFQrange As Range   'range to look for part numbers in RFQ file

定义变量

RFQ_Ecoat = "S:\FACILITY\Sales\RFQ"
RFQ_VendorFolder = RFQ_Ecoat & "\Jensen Metals"
RFQ_FileLooseVendor = Dir(RFQ_VendorFolder & "\*.xlsm") 'wildcard to open spreadsheets

DumpLocation = "RFQ_Compile test target.xlsx"
DumpSheet = "Sheet1"

开始循环

'######loop through each .xlsm file in a Vendor folder (not in RFQ folder    but loose in vendor folder)######



Do While RFQ_FileLooseVendor <> ""

Application.DisplayAlerts = False
Workbooks.Open Filename:=RFQ_VendorFolder & "\" & RFQ_FileLooseVendor,       UpdateLinks:=False
Application.DisplayAlerts = True

'vvvvvv%%%%%%%%%Copy and pasting operations%%%%%%%%%vvvvvv

文件夹

中的下一个文件循环
Next


'#########close RFQ and loop to the next RFQ_FileLooseVendor#########

Application.DisplayAlerts = False
Workbooks(RFQ_FileLooseVendor).Close
Application.DisplayAlerts = True
RFQ_FileLooseVendor = Dir() '<<<This clears my RFQ_FileLooseVendor string, which ends my Do While loop before getting to other files

Loop


End Sub

当我到达RFQ_FileLooseVendor = dir()行时,它会清除该变量(使其变为“”“)。我在无数其他论坛上看过这个,我无法理解它是如何不立即结束Do While循环的其他所有人一样对我来说。

1 个答案:

答案 0 :(得分:0)

问题已经解决:事实证明这是我在do while循环中用于for循环的东西。我使用Dir()函数来等于单元格的值。创建一个新的变量作为字符串并等同于我的Dir()函数解决了它。

当时:

Workbooks(DumpLocation).Sheets(DumpSheet) _
               .Range("A" & NextOpenCellRow + 1).Value =Dir(RFQ_VendorFolder, vbDirectory)

现在是:

                Workbooks(DumpLocation).Sheets(DumpSheet) _
               .Range("A" & NextOpenCellRow + 1).Value = RFQ_Vendor