Board logo

標題: [發問] 求filelist好方法 [打印本頁]

作者: mhl9mhl9    時間: 2013-7-19 15:22     標題: 求filelist好方法

我要取得指定folder里所有files的list,做了但太慢(5040個file,做完list(on fly)大概3分鐘),請求指點,求好方法.
附件太大,不能upload,大概是
2012\   A,B,C.....L,M,N(共14個folder)\    1月,2月........11月,12月(共12個folder)\    01.xlsx,02xlsx,......29.xlsx,30xlsx(共30個file)
合計14*12*30=5040個文件,希望取得Arr(1 to 5040), Arr(1)="2012\A\1月\01xlsx", Arr(2)="2012\A\1月\02.xlsx"........Arr(5040)="2012\N\12月\30.xlsx"
方法一定很多,我取loop死啃,所以很慢......請教好方法,謝謝了
作者: GBKEE    時間: 2013-7-19 17:55

本帖最後由 GBKEE 於 2013-7-19 17:57 編輯

回復 1# mhl9mhl9
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim S(1 To 3) As String, i As Integer, ii As Integer, iiI As Integer, xDir As String, AR()
  4.     S(1) = "D:\2012\"
  5.     For i = 65 To Asc("N")                  'A - N
  6.         S(2) = S(1) & Chr(i)
  7.         For ii = 1 To 12                    '1月-12月
  8.             S(3) = S(2) & "\" & ii & "月\"
  9.             xDir = Dir(S(3) & "*.xlsx")
  10.             Do While xDir <> ""
  11.                 ReDim Preserve AR(0 To iiI)
  12.                 AR(iiI) = S(3) & xDir
  13.                 iiI = iiI + 1
  14.                 xDir = Dir
  15.             Loop
  16.         Next
  17.     Next
  18. End Sub
複製代碼

作者: mhl9mhl9    時間: 2013-7-19 22:24

回復 2# GBKEE

真是太感謝你了,簡直一秒鐘出來了,快過我死啃180倍,而且又這麼快就幫我解決了.
既然有幸見到如此高手,想再請教個問題:
我用ADO在我上述提到的5124個文件(的list里的文件)取資料,每個文件的sheet1里的"B63:AN111"copy到thisworkbook里sheets(Temp")(從A1起往下排)
要14分鐘,(還是intel 4核 win7+excel2007),是不是很誇張?有好點的方法嗎?
(做這個file,我是第一步取得filelist,再loop每個file,用ADO逐張取出"B63:an111"排隊放在"Temp"頁,再從Temp整理資料放進"資料庫"頁,5124個文件,170210條(row)資料,16分鐘
使用人的電腦可能還沒有這麼快,所以能幫我想想方法嗎? 幫到不幫到,我都要在這裡多謝.
作者: GBKEE    時間: 2013-7-20 08:21

回復 3# mhl9mhl9
Temp整理資料放進"資料庫"頁,5124個文件,170210條(row)資料,16分鐘
這已經很快了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)