unlha32.dll の API を利用すると、VB や VBA から LHA 圧縮・解凍を行うことができます。
そのためのサンプルコードを以下に示します。
Public Declare Function Unlha Lib "unlha32" ( _
ByVal hWnd As Long, _
ByVal szCmdLine As String, _
ByVal szOutput As String, _
ByVal dwSize As Long _
) As Long
Sub main()
If Lha("a test.lzh test.txt") = False Then
MsgBox ("lha error!")
End If
End Sub
Function Lha(szCmdLine As String) As Boolean
Dim hWnd As Long 'ウィンドウハンドル
Dim szOutput As String '出力バッファ<
Const dwSize As Long = 256 '出力バッファサイズ
szOutput = Space(dwSize) '出力バッファを確保する。
If Unlha(hWnd, szCmdLine, szOutput, dwSize) = 0 Then 'unlha32 を呼び出す。
Lha = True
Else
Lha = False
End If
End Function
このサンプルコードでは、LHA コマンドを実行する関数 LHA を定義し、その中で unlha32.dll を呼び出しています。
LHA 関数に LHA.EXE のコマンドラインと同様の文字列を渡すことにより、圧縮・解凍をはじめ、LHA書庫ファイルに対する各種操作を行うことができます。
(このサンプルコードでは test.txt というファイルを圧縮し、test.lzh というファイルを作成しています)
操作の成功/失敗はブール値で返します。
LHA コマンドラインの詳細については LHA.EXE または unlha32.dll のヘルプなどを参照してください。