![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでファイルが開かれているか...
-
アクセスでイベントのロジック...
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
freadでデータがない場合の読込...
-
Excel 2003 のエラーメッセージ
-
OUTLOOK VBA 指定フォルダ内の...
-
アドインエラーについて
-
すでにファイルが開かれている...
-
2003アクセス → 2010移行のト...
-
ファイルの有無を確認した際の...
-
VBAのChangeFileOpenDirectory...
-
「パス名が無効です」の発生原因
-
エクセル起動時のアプリケーシ...
-
VB6 Dir関数で52エラー発生
-
EXCEL VBAで複数人でのADO接続...
-
EXCELVBAでONEDRIVE上への保管...
-
VB実行時エラー75:「パス名が...
-
エクセルマクロでエラーの原因...
-
Excelファイルのマクロによる排...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでファイルが開かれているか...
-
batファイルでレジストリキーの...
-
gccを行ってもexeファイルが生...
-
「パス名が無効です」の発生原因
-
Returnに対するGoSubがありません
-
アクセスのクエリでコンパイル...
-
NAS上のファイルの使用中が解除...
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
Adobeのプレミアプロの書き出し...
-
EXCELのVBAでWORDが開いてある...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
エクセルマクロでエラーの原因...
-
【COBOL】read文でエラー
-
VB6 Dir関数で52エラー発生
-
VBA ExecuteExcel4Macro 型が一...
-
Access2013にてドラッグ&ドロ...
-
freadでデータがない場合の読込...
-
ファイルクローズ(fclose)でエ...
おすすめ情報