- ベストアンサー
マクロで自動圧縮(Zip)
教えて下さい。 あるExcelファイル中のマクロを実行するとそのExcelファイル自体が特定のフォルダに自動的にZipされる。 こんなことってマクロで可能なのでしょうか?? できればソースコードの例を頂けるとありがたいです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。こんばんわ。 先ほどの回答で、自分自身は圧縮できないと書いてしまいましたが、訂正します。 やってみたら、できちゃいました。 ただし、UNLHA32.DLLが必要になりますので、別途入手してパスの通ったフォルダにインストールしてください。 サンプルでは、Dドライブに圧縮ファイルを作成します。 Option Explicit '*****APIの宣言 Public Declare Function Unlha Lib "UNLHA32.DLL" _ (ByVal hWnd As Long, _ ByVal szCmdline As String, _ ByVal Lpstr As String, _ ByVal wsize As Long) As Integer Sub testLZH() '*****LZH圧縮/解凍コマンド Dim strLZH As String 'LHAファイル名 Dim strXLS As String '圧縮元のフルパスとファイル名 Dim strCmdTxt As String 'UNLHA32.dllへのコマンド文字列 Dim strResult As String * 5000 '結果情報の戻り文字列 On Error GoTo ErrHandler 'ファイル名の設定 strXLS = ThisWorkbook.Path & "\" & ThisWorkbook.Name strLZH = "D:\test.lzh" 'コマンド文字列の生成 '"a"はLZHの圧縮・解凍を選択するスイッチ a:圧縮、e:解凍 strCmdTxt = "a " & """" & strLZH & """" & " " & """" & strXLS & """" '書庫ファイルの生成 If Unlha(0, strCmdTxt, strResult, 5000) <> 0 Then MsgBox "LZH圧縮に失敗しました。 ", vbCritical End If Exit Sub 'エラー処理 ErrHandler: MsgBox Err.Description End Sub
その他の回答 (1)
- happypoint
- ベストアンサー率36% (521/1422)
自分自身を、ということでしたら無理だと思います。 他のブックからマクロを実行して、特定のファイルを圧縮するのはできます。AccessでLZHですが昔、やったことがあります。 それでよければソースコードは・・・ ちょっと探してきます。