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
旧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/
参考まで↓
https://win11lab.info/win11-lzh/
[返信 2] Re : パソコンを乗り換えたらVBAがエラー発生して動かなくなった UNLHA32.DLL
投稿者 : かず 投稿日時 : 2025/09/22(Mon) 14:43:10
修正後のVBAマクロ
修正後の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-11-27 07:43:59 )