Board logo

標題: [發問] 如何從資料夾的Excel讀檔寫檔 [打印本頁]

作者: starbox520    時間: 2016-12-19 09:59     標題: 如何從資料夾的Excel讀檔寫檔

資料夾裡每日都會新增今日的數據
分別為第8欄跟第19欄

如果我得資料夾路徑是C:\Users\Rawdata

要把資料夾內的檔案全部跑一遍

分別取第8欄跟第19欄

附檔有1個月的資料

也有附上我合併起來的格式<跑完的結果>

我只有取14天的資料

請問該如何做呢

因為我有一年的資料要跑= " =

[attach]26122[/attach]


[attach]26123[/attach]
作者: Hsieh    時間: 2016-12-19 16:36

回復 1# starbox520
  1. Sub inputraw()
  2. ActiveSheet.UsedRange.Offset(1).ClearContents
  3. Application.ScreenUpdating = False
  4. fd = "C:\Users\Rawdata\" 'rawdata檔案路徑
  5. fs = Dir(fd & "*")
  6. r = 2
  7. Do Until fs = ""
  8. With Workbooks.Open(fd & fs)
  9.    ActiveSheet.Cells(r, 1).Resize(, 21) = .ActiveSheet.Cells(8, 1).Resize(, 21).Value
  10.    ActiveSheet.Cells(r, 22).Resize(, 20) = .ActiveSheet.Cells(19, 2).Resize(, 20).Value
  11.    .Close 0
  12. End With
  13. fs = Dir
  14. r = r + 1
  15. Loop
  16. Application.ScreenUpdating = True
  17. End Sub
複製代碼

作者: starbox520    時間: 2016-12-19 21:59

回復 2# Hsieh
回版大
我是用這種方法可是有侷限在還要創資料夾
還是您的好用哈哈
  1. Sub test()
  2.     Range("B2").Select
  3.     ActiveWindow.FreezePanes = True
  4.    
  5. Dim p, f, arr1, arr2, arr3, arr4,  dic
  6. Application.ScreenUpdating = False
  7. Set dic = CreateObject("scripting.dictionary")
  8. ActiveSheet.Range("B2:AO65535").ClearContents
  9.     For j = 2 To ActiveSheet.Range("A1").CurrentRegion.Rows.Count
  10.         dic(Cells(j, 1).Value) = j
  11.     Next

  12. p = ThisWorkbook.Path & "\rawdata\"
  13. f = Dir(p & "*.xls")

  14. Do While Len(f)
  15.     If f <> "" Then
  16.         With GetObject(p & f)
  17.             arr1 = .Sheets(2).Range("A2:A8")
  18.             arr2 = .Sheets(2).Range("B2:U8")
  19.             arr3 = .Sheets(2).Range("A13:A19")
  20.             arr4 = .Sheets(2).Range("B13:U19")
  21.             .Close SaveChanges:=False
  22.         End With
  23.     End If
  24.     With ThisWorkbook.ActiveSheet
  25.         For i = 1 To 7
  26.             If dic(arr1(i, 1)) <> "" Then
  27.                 .Range("B" & dic(arr1(i, 1))).Resize(1, UBound(arr2, 2)).Value = WorksheetFunction.Index(arr2, i, 0)
  28.                 'h1 = dic(arr2(i, 1))
  29.             
  30.             End If
  31.             If dic(arr3(i, 1)) <> "" Then
  32.                 .Range("v" & dic(arr3(i, 1))).Resize(1, UBound(arr4, 2)).Value = WorksheetFunction.Index(arr4, i, 0)
  33.             End If
  34.         Next
  35.     End With
  36.     f = Dir
  37. Loop
  38. Application.ScreenUpdating = True
  39. End Sub
複製代碼





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