Excel VBA 質問スレッド №2147 (解決済)

パソコンを乗り換えたらVBAがエラー発生して動かなくなった UNLHA32.DLL

投稿者 : かず     投稿日時 : 2025/09/18(Thu) 11:16:22     OS : Windows 11     EXCEL : 未指定
旧PC(windows10-office2021)から新PC(windows11-office2024)に乗り換えて
旧PCで動作していたEXCELのVBAマクロ(下記)を新PCで実行したところ、
実行時エラー53 ファイルが見つかりません unlha32.DLL
になり動作しなくなりました

UNLHA32.DLLファイルは、旧PC、新PCともに
C:\windows\SysWOW64
の直下に存在していました

新PCで動作させるための対処方法がわかる方がいらっしゃったら教えてください

ーーーーーーーーーーーーーー
Declare PtrSafe Function Unlha Lib "unlha32.DLL" (ByVal hwnd As Long, ByVal szCmdline As String, _
ByVal szOutput As String, ByVal wSize As Integer) As Integer
Sub importData()
    Dim szOutput As String * 1024, killFile As String, lzhFile As String
    killFile = Dir("c:\k_data\tmp\*.*")
    If killFile <> "" Then
        Kill "c:\k_data\tmp\*.*"
    End If
    lzhFile = Dir("C:\k_data\merg\")
    szCmdline = "x c:\k_data\merg\" & lzhFile & " c:\k_data\TMP\"
    RET = Unlha(hwnd, szCmdline, szOutput, wSize)
    import_seiseki1
    Kill "c:\k_data\tmp\*.*"
End Sub

スポンサーリンク
[返信 1] Re : パソコンを乗り換えたらVBAがエラー発生して動かなくなった UNLHA32.DLL
投稿者 : 匿名     投稿日時 : 2025/09/18(Thu) 12:15:32
参考まで↓
https://win11lab.info/win11-lzh/

[返信 2] Re : パソコンを乗り換えたらVBAがエラー発生して動かなくなった UNLHA32.DLL
投稿者 : かず     投稿日時 : 2025/09/22(Mon) 14:43:10
修正後のVBAマクロ
Sub importData()
    Dim lzhFile As String
    Dim lzhFullPath As String
    Dim outputFolder As String
    Dim sevenZipPath As String
    Dim command As String
    Dim killFile As String

    ' ★ 7-Zip の実行ファイルのパスを指定(インストール先に応じて変更)
    sevenZipPath = "C:\Program Files\7-Zip\7z.exe"
    
    ' 出力フォルダ
    outputFolder = "C:\k_data\tmp\"

    ' 一時フォルダ内のファイルを削除
    killFile = Dir(outputFolder & "*.*")
    Do While killFile <> ""
        Kill outputFolder & killFile
        killFile = Dir()
    Loop

    ' .lzhファイルを1つ取得
    lzhFile = Dir("C:\k_data\merg\*.lzh")
    If lzhFile = "" Then
        MsgBox "LZHファイルが見つかりません。", vbExclamation
        Exit Sub
    End If
    
    lzhFullPath = "C:\k_data\merg\" & lzhFile

    ' Shellコマンドを作成
    command = Chr(34) & sevenZipPath & Chr(34) & " x " & _
              Chr(34) & lzhFullPath & Chr(34) & " -o" & Chr(34) & outputFolder & Chr(34) & " -y"

    ' 解凍実行
    Shell command, vbHide

    ' 元のマクロを呼び出し(必要に応じて修正)
    Application.Wait Now + TimeValue("0:00:02") ' 少し待つ(2秒)
    import_seiseki1

    ' 解凍後ファイルを削除
    killFile = Dir(outputFolder & "*.*")
    Do While killFile <> ""
        Kill outputFolder & killFile
        killFile = Dir()
    Loop
End Sub

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-10-11 05:53:06 )
タイトルとURLをコピーしました