- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 85
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-4-9
               
|
10#
發表於 2012-4-16 20:25
| 只看該作者
回復 9# luke - Sub ZipAsWb2() '壓縮成Zip
- '參考crdotlin前輩http://blog.xuite.net/crdotlin/excel/20830799-%E4%B8%80%E6%AC%A1%E6%80%A7%E6%9B%BF%E6%8F%9B
- Dim ZipFile, srFolder, nFile, ofile
- Dim theShell As Object
- '指定來源檔案的資料夾
- f = ThisWorkbook.Path
- srFolder = f
- '檢查資料夾是否存在
- Set theShell = CreateObject("Shell.Application")
- If theShell.Namespace(srFolder) Is Nothing Then
- MsgBox srFolder & " 資料夾不存在!"
- End
- End If
- '檢查是否為空的資料夾
- If theShell.Namespace(srFolder).items.Count = 0 Then
- MsgBox srFolder & " 資料夾中沒任何檔案存在!"
- End
- End If
- '開啟一個空的Zip壓縮檔案
- ZipFile = f & ".zip"
- Open ZipFile For Output As #1
- '寫入ZIP檔頭
- Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
- Close #1
- '複製每一個在zip檔中的檔案
- On Error Resume Next
- For Each ofile In theShell.Namespace(srFolder).items
- If ofile <> ".zip" Then theShell.Namespace(ZipFile).CopyHere (ofile)
- '簡單暫停1秒等候複製完成
- Application.Wait Now + 1 / 86400#
- Next
- End Sub
- Sub InputCSV() '讀入CSV
- Dim ary() As String, rw As Long
- i = 0: k = 1
- Cells.ClearContents
- path1 = ThisWorkbook.Path & "\"
- file1 = Dir(path1 & "*.*", vbDirectory) '只處理資料夾
- Do While file1 <> ""
- If file1 <> "." And file1 <> ".." And _
- GetAttr(path1 & file1) = vbDirectory Then
- i = i + 1
- ReDim Preserve ary(i)
- ary(i) = file1
- End If
- file1 = Dir
- Loop
- For i = 1 To UBound(ary)
- path2 = path1 & ary(i) & "\"
- fs = Dir(path2 & "*.csv")
- Do Until fs = ""
- If Split(fs, ".")(0) = ary(i) Then
- Open path2 & fs For Input As #1
- r = 1
- Do Until EOF(1)
- Line Input #1, mystr
- ar = Split(mystr, ",")
- Cells(r, k).Resize(, UBound(ar) + 1) = ar
- r = r + 1
- Loop
- k = k + 2
- Close #1
- End If
- fs = Dir
- Loop
- Next i
- End Sub
- Sub OutputCSV() '輸出CSV
- path1 = ThisWorkbook.Path & "\"
- k = 1
- Do Until Cells(1, k) = ""
- r = 1
- fs = path1 & Cells(1, k + 1) & "\" & Cells(1, k + 1) & ".csv"
- Open fs For Output As #1
- Do Until Cells(r, k) = ""
- mystr = Cells(r, k) & "," & Cells(r, k + 1)
- Print #1, mystr
- r = r + 1
- Loop
- Close #1
- k = k + 2
- Loop
- End Sub
複製代碼 |
|