返回列表 上一主題 發帖

[發問] 如何從不同資料夾匯入文字檔

回復 3# luke
  1. Sub InputCSV() '讀入CSV
  2. Dim ary() As String, rw As Long
  3. i = 0: k = 1
  4. path1 = ThisWorkbook.Path & "\"
  5. file1 = Dir(path1 & "*.*", vbDirectory) '只處理資料夾
  6. Do While file1 <> ""
  7.   If file1 <> "." And file1 <> ".." And _
  8.      GetAttr(path1 & file1) = vbDirectory Then
  9.      i = i + 1
  10.      ReDim Preserve ary(i)
  11.      ary(i) = file1
  12.   End If
  13.   file1 = Dir
  14. Loop
  15. For i = 1 To UBound(ary)
  16. path2 = path1 & ary(i) & "\"
  17. fs = Dir(path2 & "*.csv")
  18. Do Until fs = ""
  19. Open path2 & fs For Input As #1
  20. r = 1
  21. Do Until EOF(1)
  22. Line Input #1, mystr
  23. ar = Split(mystr, ",")
  24. Cells(r, k).Resize(, UBound(ar) + 1) = ar
  25. r = r + 1
  26. Loop
  27. k = k + 2
  28. Close #1
  29. fs = Dir
  30. Loop
  31. Next i
  32. End Sub
  33. Sub OutputCSV() '輸出CSV
  34. path1 = ThisWorkbook.Path & "\"
  35. k = 1
  36. Do Until Cells(1, k) = ""
  37.    r = 1
  38.    fs = path1 & Cells(1, k + 1) & "\" & Cells(1, k + 1) & ".csv"
  39.    Open fs For Output As #1
  40.    Do Until Cells(r, k) = ""
  41.       mystr = Cells(r, k) & "," & Cells(r, k + 1)
  42.       Print #1, mystr
  43.       r = r + 1
  44.    Loop
  45.    Close #1
  46.    k = k + 2
  47. Loop
  48. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 9# luke
  1. Sub ZipAsWb2() '壓縮成Zip
  2. '參考crdotlin前輩http://blog.xuite.net/crdotlin/excel/20830799-%E4%B8%80%E6%AC%A1%E6%80%A7%E6%9B%BF%E6%8F%9B
  3. Dim ZipFile, srFolder, nFile, ofile
  4. Dim theShell As Object
  5.     '指定來源檔案的資料夾
  6.     f = ThisWorkbook.Path
  7.     srFolder = f
  8.     '檢查資料夾是否存在
  9.     Set theShell = CreateObject("Shell.Application")
  10.     If theShell.Namespace(srFolder) Is Nothing Then
  11.         MsgBox srFolder & " 資料夾不存在!"
  12.         End
  13.     End If
  14.     '檢查是否為空的資料夾
  15.     If theShell.Namespace(srFolder).items.Count = 0 Then
  16.         MsgBox srFolder & " 資料夾中沒任何檔案存在!"
  17.         End
  18.     End If
  19.     '開啟一個空的Zip壓縮檔案
  20.     ZipFile = f & ".zip"
  21.     Open ZipFile For Output As #1
  22.     '寫入ZIP檔頭
  23.     Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
  24.     Close #1
  25.     '複製每一個在zip檔中的檔案
  26.     On Error Resume Next
  27.     For Each ofile In theShell.Namespace(srFolder).items
  28.         If ofile <> ".zip" Then theShell.Namespace(ZipFile).CopyHere (ofile)
  29.         '簡單暫停1秒等候複製完成
  30.         Application.Wait Now + 1 / 86400#
  31.     Next
  32. End Sub

  33. Sub InputCSV() '讀入CSV
  34. Dim ary() As String, rw As Long
  35. i = 0: k = 1
  36. Cells.ClearContents
  37. path1 = ThisWorkbook.Path & "\"
  38. file1 = Dir(path1 & "*.*", vbDirectory) '只處理資料夾
  39. Do While file1 <> ""
  40.   If file1 <> "." And file1 <> ".." And _
  41.      GetAttr(path1 & file1) = vbDirectory Then
  42.      i = i + 1
  43.      ReDim Preserve ary(i)
  44.      ary(i) = file1
  45.   End If
  46.   file1 = Dir
  47. Loop
  48. For i = 1 To UBound(ary)
  49. path2 = path1 & ary(i) & "\"
  50. fs = Dir(path2 & "*.csv")
  51. Do Until fs = ""
  52. If Split(fs, ".")(0) = ary(i) Then
  53. Open path2 & fs For Input As #1
  54. r = 1
  55. Do Until EOF(1)
  56. Line Input #1, mystr
  57. ar = Split(mystr, ",")
  58. Cells(r, k).Resize(, UBound(ar) + 1) = ar
  59. r = r + 1
  60. Loop
  61. k = k + 2
  62. Close #1
  63. End If
  64. fs = Dir
  65. Loop
  66. Next i
  67. End Sub
  68. Sub OutputCSV() '輸出CSV
  69. path1 = ThisWorkbook.Path & "\"
  70. k = 1
  71. Do Until Cells(1, k) = ""
  72.    r = 1
  73.    fs = path1 & Cells(1, k + 1) & "\" & Cells(1, k + 1) & ".csv"
  74.    Open fs For Output As #1
  75.    Do Until Cells(r, k) = ""
  76.       mystr = Cells(r, k) & "," & Cells(r, k + 1)
  77.       Print #1, mystr
  78.       r = r + 1
  79.    Loop
  80.    Close #1
  81.    k = k + 2
  82. Loop
  83. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題