フォルダからExcelファイルを開いて、詳細をコピーしてマスターフォルダに貼り付けようとしています。各最初のレベルのフォルダには、いくつかの.xlsmファイルがありますが、最初のレベルのフォルダ内の2番目のレベルのフォルダ内にも存在します(余分な\ filepath)。ループ内のファイルを開く
今、私は最初のレベルのフォルダをループし、 "緩い"ブック(第2レベルのフォルダにない第1レベルのフォルダのファイル)を開く方法を見つけようとしています。
これは私が持っているものです。
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
は、ループ内
'######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
次のファイル内のループを開始する変数に
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"
を定義します。私は最終的には、変数の故に大量、フォルダの別の「レベル」を追加しますのでご注意くださいフォルダ
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以上 'xlsm'ファイルを持っていることを確認していますか?そうであれば、すぐにdoループを終了します。 –
最後のコードスニペットの先頭にある 'Next'は、コピーと貼り付けの操作で、他のForループからのものであると仮定していますか? – TheEngineer
はい。 "next"は私が使用した "for each"ループからのものです – Chris