【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

教えて下さい。

あるExcelファイル中のマクロを実行するとそのExcelファイル自体が特定のフォルダに自動的にZipされる。
こんなことってマクロで可能なのでしょうか??

できればソースコードの例を頂けるとありがたいです。
よろしくお願いします。

A 回答 (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
    • good
    • 0

自分自身を、ということでしたら無理だと思います。



他のブックからマクロを実行して、特定のファイルを圧縮するのはできます。AccessでLZHですが昔、やったことがあります。

それでよければソースコードは・・・
ちょっと探してきます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!