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ランキング
-
gccを行ってもexeファイルが生...
-
access テキストボックスの値取得
-
Access2013にてドラッグ&ドロ...
-
VBでファイルが開かれているか...
-
Adobeのプレミアプロの書き出し...
-
freadでデータがない場合の読込...
-
VB:「実行時エラー53 実行ファ...
-
エクセルVBAでパワーポイントを...
-
Returnに対するGoSubがありません
-
ADOを使用してExcelファイルを...
-
Request.BinaryReadでのエラー
-
アクセスのクエリでコンパイル...
-
FORTRANの実行エラーについて
-
VBから参照できないCのDLLを使...
-
ディストリビューションで作成...
-
Access2010 コンパイルエラー...
-
Dreamweaver3で「onLoad内で_on...
-
batファイルでレジストリキーの...
-
VC++2005 windowsフォームアプ...
-
CSVファイルが開かれているかど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
FTPの送信結果を検知したい
-
NAS上のファイルの使用中が解除...
-
VBA ExecuteExcel4Macro 型が一...
-
access テキストボックスの値取得
-
EXCELのVBAでWORDが開いてある...
-
すでにファイルが開かれている...
-
EXCELVBAでONEDRIVE上への保管...
-
Excelファイルのマクロによる排...
-
OUTLOOK VBA 指定フォルダ内の...
-
RAR圧縮ファイル(分割)の順番が...
-
エクセルマクロでエラーの原因...
おすすめ情報