![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VB2005または2008でUnzip32を使ってzipファイルを解凍する方法を教えてください。
Unzip32のバージョンは5.42、OSはXP32bitSP3です。
UnZipGetVersionではきちんとバージョンが返ってきますので、DLL自体には問題はないと思います。
Classの下に
Public Declare Function UnZip Lib "unzip32.dll" (ByVal hwnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As Long
を記述し、
UnZip(0, "-o C:\01.zip E:\", vbNull, 0)
と命令してもコンパイラエラーになってしまいます。
第二引数のC:\01.zipはちゃんと存在するファイルであることを一応書き添えておきます。
引数の記述がおかしいと思うのですが、Unzip32のドキュメントを読んでも解決できません。
一日中ぐぐってもVB2005以降での構文サンプルも見つかりませんでした。
UnzioExtractでも引数の説明が意味不明で解凍できませんでした。
できましたら第一から第四までの引数になにを入れたらいいのか、
具体的に指示していけたらありがたいです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
まず、前回の訂正です。
>"E:\" のところは、出力先ではなく、ZIP 内のファイルを指定するんじゃないかと思います。
は私の勘違いでした。
で、エラーの内容ですが、
http://www.red.oit-net.jp/tatsuya/vb/Unzip32.htm
によると(おそらく、このページを参考にされてたんですよね。)
Private Const ERROR_NOT_FIND_ARC_FILE = &H8029&
とのことなので、C:\01.zip が壊れているのではないかと思います。
一度、他の解凍ソフトで解凍できるか試してみてはどうでしょうか。
ところで、
Public Declare Function UnZip Lib "unzip32.dll" _
(ByVal hwnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As Integer
で本当にエラーが返ってきますか?
前回書いたように
Public Declare Function UnZip Lib "unzip32.dll" (ByVal hwnd As Integer, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Integer) As Integer
と宣言しないと ( hwnd As Integer、dwSize As Integer です。) 例外が発生するのではないかと思うのですが・・・。
Googleクロームかr投稿したら全部消えてしまったので書き直します(泣
回答ありがとうございました
ご指摘いただいたデータ型はLongのままでもDLLからエラーが返ってきていました。が、Integerに修正して試行したところイッパツで回答できました。
ご指導いただきありがとうございました。
No.1
- 回答日時:
Public Declare Function UnZip Lib "unzip32.dll" (ByVal hwnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As Long
は VB6 用の宣言だと思います。.NET ( Win32 ) では
Public Declare Function UnZip Lib "unzip32.dll" (ByVal hwnd As Integer, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Integer) As Integer
とします。( Private でも OK かも。)
"E:\" のところは、出力先ではなく、ZIP 内のファイルを指定するんじゃないかと思います。
vbNull ではなく、vbNullString にしないとだめだと思います。
UnZip(0, "-o C:\01.zip E:\", vbNull, 0)
↓
UnZip(0, "-o C:\01.zip *.*", vbNullString, 0)
回答ありがとうございます
下記の記述で試してみましたがError/Warning :0x8029と返ってきます
ファイルは存在していますし、エクセルからUnzip32.DLLで解凍することはできるのですが・・・・
Public Declare Function UnZip Lib "unzip32.dll" _
(ByVal hwnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As Integer
Private Sub Button1_Click _
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim result As Long '戻り値 (成功:0 失敗:エラーコード)
result = UnZip(0, "C:\01.zip C:\", vbNullString, 0)
If (result <> 0) Then MsgBox("Error/Warning : 0x" & Hex(result))
End Sub
引き続きよろしくお願い致します
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) excel vba 参照渡しと値渡し 2 2022/04/27 10:45
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでイベントのロジック...
-
fgets関数のEOFの扱い方について
-
【COBOL】read文でエラー
-
EXCEL マクロについて教えてく...
-
NAS上のファイルの使用中が解除...
-
データベースソフトのアクセス2...
-
「パス名が無効です」の発生原因
-
郵便番号を表示させる関数のエ...
-
FORTRANの実行エラーについて
-
cube PDFについて
-
ディストリビューションで作成...
-
ASPからACCESSのOPENどうしても...
-
VBAのChangeFileOpenDirectory...
-
アクセスのクエリでコンパイル...
-
PowerShellを使って関連付けら...
-
FTPの送信結果を検知したい
-
インストール時のエラーメッセ...
-
パソコンで受信したGmailのファ...
-
VBから参照できないCのDLLを使...
-
VB.NETでUnzip32.DLLを使うには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでファイルが開かれているか...
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
「パス名が無効です」の発生原因
-
access テキストボックスの値取得
-
アクセスのクエリでコンパイル...
-
PowerShellを使って関連付けら...
-
freadでデータがない場合の読込...
-
【COBOL】read文でエラー
-
gccを行ってもexeファイルが生...
-
ファイルクローズ(fclose)でエ...
-
VB6 Dir関数で52エラー発生
-
ACCESS VBAでのインポート
-
NAS上のファイルの使用中が解除...
-
FTPの送信結果を検知したい
-
エクセルマクロでエラーの原因...
-
Access2013にてドラッグ&ドロ...
-
EXCELのVBAでWORDが開いてある...
-
fcloseで発生するエラーについて。
おすすめ情報