2016-06-22 9 views
0

フォルダから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

はあなたがフォルダ内の1以上 'xlsm'ファイルを持っていることを確認していますか?そうであれば、すぐにdoループを終了します。 –

+0

最後のコードスニペットの先頭にある 'Next'は、コピーと貼り付けの操作で、他のForループからのものであると仮定していますか? – TheEngineer

+0

はい。 "next"は私が使用した "for each"ループからのものです – Chris

答えて

0

問題が解決しました:doループ内で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 
関連する問題