
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ランキング
-
【関数】同じ関数なのに、エラ...
-
gccを行ってもexeファイルが生...
-
access テキストボックスの値取得
-
VBでファイルが開かれているか...
-
インプットボックスからファイ...
-
エクセルマクロでエラーの原因...
-
郵便番号を表示させる関数のエ...
-
Excel 2003 のエラーメッセージ
-
ワークブックに名前をつけて保...
-
C#でのEXCELの起動方法に関して
-
EXCELで「表示形式を追加...
-
Railsで500サーバーエラー
-
Returnに対するGoSubがありません
-
DisplayAlertsブロパティで ”実...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
ホームページビルダー14でHP...
-
VB:「実行時エラー53 実行ファ...
-
PCにmicroSDカードを(USBで)差...
-
AutoExecで自動終了させるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access テキストボックスの値取得
-
Returnに対するGoSubがありません
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
NAS上のファイルの使用中が解除...
-
アクセスのクエリでコンパイル...
-
VBでファイルが開かれているか...
-
ExcelVBAで既に開いてるwordを...
-
エクセルマクロでエラーの原因...
-
batファイルでレジストリキーの...
-
【COBOL】read文でエラー
-
VB6 Dir関数で52エラー発生
-
「アクティブ ユーザーが多すぎ...
-
データベースソフトのアクセス2...
-
VBから参照できないCのDLLを使...
-
DisplayAlertsブロパティで ”実...
-
Access2013にてドラッグ&ドロ...
-
ACCESS VBAでのインポート
-
すでにファイルが開かれている...
-
Vba ファイル書き込み時に書き...
おすすめ情報