サポート掲示板
HOME  □ MANUAL  □ 新着記事  □ 新規投稿
ツリー表示  □ 記事全文表示  □ SEARCH  □ 過去ログ
ツリー表示

MESSAGE Windows7で解凍できて、XPではエラー /maite49 (13/04/04(Thu) 19:52) [1146]
....MESSAGE Re[1]: Windows7で解凍できて、XPではエラー /Akky (13/04/05(Fri) 18:45) [1147]
........MESSAGE Re[2]: Windows7で解凍できて、XPではエラー /maite49 (13/04/08(Mon) 18:33) [1148]
............MESSAGE Re[3]: Windows7で解凍できて、XPではエラー /Akky (13/04/09(Tue) 08:58) [1149]
................MESSAGE Re[4]: Windows7で解凍できて、XPではエラー /maite49 (13/04/09(Tue) 10:04) [1150] 解決済み!


親記事 / ▼[ 1147 ]
NO.1146  Windows7で解凍できて、XPではエラー
□投稿者/ maite49 -(2013/04/04(Thu) 19:52:40)
□U R L/
【ソフト名】
7-zip32.dll
【バージョン】
9.20.0.2
【使用OS】
WindowsXP
【PC機種】

【質問内容】
お世話になります。
7-zip32.dllを使用させて頂き、Excel VBAでzipファイル(Pass付)をカレントフォルダに解凍するマクロを作成しました。
作成したWindows7のExcel2010では問題なく解凍できましたが、別PCのWindowsXPとExcel2003では戻り値がエラーとなり、
解凍ができませんでした。

以下にソースコードを記述します。

Declare Function SevenZip Lib "7-zip32.DLL" _
(ByVal hWnd As Long, _
ByVal szCmdLine As String, _
ByVal szOutput As String, _
ByVal dwSize As Long) As Long
Sub 解凍()

Dim Lpstr As String * 5000
Dim cmdLine As String
Dim res As Long

cmdLine = "x -aoa " & ファイル名 & " -p" & パスワード & " " & ThisWorkbook.Path & "\"

res = SevenZip(0, cmdLine, Lpstr, 5000)

End Sub

Windows7とExcel2010では、上記変数resの値は「0」でしたが、WindowsXPとExcel2003では「33026」となり、
エラーログLpstrの内容が「Base directory isn't found.」となっていました。

OSまたはExcelと7-zip32.dllの相性の問題とも考え、unZip32.dllに変更して試してみましたが、
やはりWindows7では解凍でき、XPでは解凍できませんでした。
尚、unZip32.dll使用時のresの値は「32809」で、Lpstrの内容は「can't find zipfile[C:\Documents.zip]」でした。
ログの内容は違いますが、解凍できない原因は同じなのではないかと何となく思っています。
XPで解凍するには何かを変更する必要があるのでしょうか。
ご回答のほど、よろしくお願いいたします。



▲[ 1146 ] / ▼[ 1148 ]
NO.1147  Re[1]: Windows7で解凍できて、XPではエラー
□投稿者/ Akky -(2013/04/05(Fri) 18:45:32)
□U R L/
エラーメッセージ通り「基本ディレクトリが存在しない」なんだと思いますがそれは問題ないでしょうか?
ここに存在しないパスを指定するとエラーになります。
7とXPではフォルダ構成違ったりするので
ThisWorkbook.Pathの内容をご確認ください。
と思ったけど単にアクセス制限されてるだけなのかも。



▲[ 1147 ] / ▼[ 1149 ]
NO.1148  Re[2]: Windows7で解凍できて、XPではエラー
□投稿者/ maite49 -(2013/04/08(Mon) 18:33:44)
□U R L/
回答ありがとうございます。

Windows7のみで確認しても、ネットワーク上のフォルダではエラー値33026で
解凍できないフォルダがあったり、その一つ上のフォルダでは
解凍できたりする現象が確認されましたので、Akky様の仰る通り
アクセス制限が原因かもしれません。

ただ、解凍ができるフォルダとできないフォルダのアクセス制限の
違いが全く見られないのが不思議なところです。
(コマンドラインのパスにスペースが入っていると解凍できないのは
確認していますが、それとも違う様です。)



▲[ 1148 ] / ▼[ 1150 ]
NO.1149  Re[3]: Windows7で解凍できて、XPではエラー
□投稿者/ Akky -(2013/04/09(Tue) 08:58:52)
□U R L/
> コマンドラインのパスにスペースが入っていると解凍できない
ああ、多分それですね。

ThisWorkbook.Pathを""で囲ってやってください。
他にもファイル名の部分も囲ってやったほうが良いです。

> cmdLine = "x -aoa " & ファイル名 & " -p" & パスワード & " " & ThisWorkbook.Path & "\"
VBAは全く触ったこと無いのでエスケープ文字の書き方がよくわからんのですが

cmdLine = "x -aoa """ & ファイル名 & """ -p" & パスワード & " """ & ThisWorkbook.Path & "\"""

て感じにするんじゃないですかね。



▲[ 1149 ] / 返信無し
NO.1150  Re[4]: Windows7で解凍できて、XPではエラー
□投稿者/ maite49 -(2013/04/09(Tue) 10:04:57)
□U R L/
解決済み!
コマンドラインを教えて頂いた書き方に変更したところ、
スペースが入っていると解凍できない問題と、
XPとEXCEL2003の組み合わせで解凍できない問題の両方とも解決しました。
ネットワーク上のフォルダの場所により解凍できたり
できなかったりする問題は、当方の勘違いだったようです。
ありがとうございました。




- Child Tree -