【VBA】Win10の標準機能でフォルダやファイルを圧縮する
データの圧縮について
8月なのに水が冷たい。。。
秋生まれだからなのか、暑いのと寒いのが苦手。どもjimです✋
今回は、以前あった依頼について記事にしてみようと思います。
どんな依頼かってぇーと、
『フォルダやファイルの圧縮(機能の一部に)』
まだこんなことしている企業があったのか。。。
圧縮が必要な仕事の仕方って、どうなんでしょうか?
多分、いけてねぇっす😅
簡単な圧縮方法
Win10の標準機能を使って圧縮するっす。
1、同じ名前の古いzipがあれば消す
2、zipフォルダ作成
3、zipフォルダに指定したフォルダやファイルをコピー
4、コピーが終わるまで待機
Option Explicit
Sub zip()
Dim targetName(2) As Variant
'targetName(0) = "圧縮するフォルダorファイル
targetName(0) = "C:\○○\△△フォルダ"
targetName(1) = "C:\○○\△△\××フォルダ"
targetName(2) = "C:\○○\△△\Book1.xlsx"
Call MakeZip("C:\○○\テスト(フルパス).zip", targetName)
End Sub
Private Sub MakeZip(ByVal zipName As String, collections As Variant)
Dim FSO As Object
Dim shellApp As Object
Dim zipFolder As Object
Dim dataObject As Variant
Dim i As Long
Set FSO = CreateObject("Scripting.FileSystemObject")
Set shellApp = CreateObject("Shell.Application")
If FSO.fileexists(zipName) = True Then
FSO.deletefile zipName
End If
With FSO.createtextfile(zipName, True)
.write "PK" & Chr(5) & Chr(6) & String(18, 0)
.Close
End With
i = 0
Set zipFolder = shellApp.Namespace(FSO.getabsolutepathname(zipName))
For Each dataObject In collections
If CStr(dataObject) <> "" Then
dataObject = FSO.getabsolutepathname(dataObject)
zipFolder.copyhere (dataObject)
i = i + 1
End If
Next
Do While zipFolder.Items().Count <> i
DoEvents
Loop
Set FSO = Nothing
Set shellApp = Nothing
End Sub
何かの事故で無限ループに入ったらすんまてん。
圧縮なんて無駄なこと止めさせたい。。。
したら、またね✋




ディスカッション
コメント一覧
まだ、コメントがありません