6
有沒有辦法在Windows中以編程方式創建壓縮文件夾?我看不到使用FileSystemObject執行此操作的方法(儘管存在「壓縮」屬性)。創建一個壓縮(或壓縮)文件夾
我見過zip dll,但我寧願避免重新發布dll,如果可能的話。畢竟,Windows XP原生支持壓縮文件夾。
有沒有辦法在Windows中以編程方式創建壓縮文件夾?我看不到使用FileSystemObject執行此操作的方法(儘管存在「壓縮」屬性)。創建一個壓縮(或壓縮)文件夾
我見過zip dll,但我寧願避免重新發布dll,如果可能的話。畢竟,Windows XP原生支持壓縮文件夾。
看一看下面的鏈接:
http://www.rondebruin.nl/windowsxpzip.htm
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1383147&SiteID=1
從first link例如去除的重要組成部分可能被證明是足夠的。
Sub NewZip(sPath)
'Create empty Zip File
'Changed by keepITcool Dec-12-2005
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub
Function Split97(sStr As Variant, sdelim As String) As Variant
'Tom Ogilvy
Split97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") & """}")
End Function
Sub Zip_File_Or_Files()
Dim strDate As String, DefPath As String, sFName As String
Dim oApp As Object, iCtr As Long, I As Integer
Dim FName, vArr, FileNameZip
DefPath = Application.DefaultFilePath
If Right(DefPath, 1) <> "\" Then
DefPath = DefPath & "\"
End If
strDate = Format(Now, " dd-mmm-yy h-mm-ss")
FileNameZip = DefPath & "MyFilesZip " & strDate & ".zip"
'Browse to the file(s), use the Ctrl key to select more files
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xl*), *.xl*", _
MultiSelect:=True, Title:="Select the files you want to zip")
If IsArray(FName) = False Then
'do nothing
Else
'Create empty Zip File
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
I = 0
For iCtr = LBound(FName) To UBound(FName)
vArr = Split97(FName(iCtr), "\")
sFName = vArr(UBound(vArr))
If bIsBookOpen(sFName) Then
MsgBox "You can't zip a file that is open!" & vbLf & _
"Please close it and try again: " & FName(iCtr)
Else
'Copy the file to the compressed folder
I = I + 1
oApp.Namespace(FileNameZip).CopyHere FName(iCtr)
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = I
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
End If
Next iCtr
MsgBox "You find the zipfile here: " & FileNameZip
End If
End Sub
重複的問題,請參見[Windows內置的ZIP壓縮腳本能夠?](http://stackoverflow.com/questions/30211/windows-built-in-zip-compression-script-able#124775 )我還用一些示例代碼和幾個鏈接回答了問題: –
Jay
2008-10-07 16:19:11
請參閱以下問題:[http://stackoverflow.com/questions/118547/creating-a-zip-file-on-windows-xp2003-in-cc](http://stackoverflow.com/questions/118547/creating-a-zip -file上 - 窗口xp2003-在-CC)。 – warren 2008-10-07 15:27:54