Windows Server 2003 でZIPファイルを解凍したいのですが、うまくゆきません。
UNZIP32.DLLを試しましたが、ZIPファイルの形式に問題があるのか、エラーになってしまいます。
ShellExecuteもだめでした。
ネットの情報の丸写しですが、以下の2通りのやり方をためしました。
いずれもうまく行きません。
何かよい方法はないでしょうか?
★UNZIP31.DLLを使う方法Declare Function UnZipGetVersion Lib "UNZIP32.DLL" () As LongDeclare Function UnZipGetRunning Lib "UNZIP32.DLL" () As BooleanDeclare Function UNZIP Lib "UNZIP32.DLL" Alias "UnZip" (ByVal hWnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Function ExtractZIP(vZipFile As Variant, vDestination As Variant)Dim objFileSys As ObjectDim objShell As ObjectDim objFile As ObjectDim objDestination As ObjectSet objFileSys = CreateObject("Scripting.FileSystemObject")Set objShell = CreateObject("Shell.Application")' Zipファイルにアーカイブされているファイルが全て展開されるobjDestination.CopyHere objFile.ItemsExtractZIP = Err.NumberEnd Function「指定されたファイルが存在しません」とエラーメッセージが表示されます。
解凍したいZIPファイルは、無圧縮で、中に2階層のディレクトリがふくまれており、1階層目のディレクトリにはファイルが存在しないもので、この構造に問題があるのかもしれませんなお、自分で作成した、ひとつのファイルを圧縮したZIPファイルでは問題なく解凍できました。
★ShellExecuteを使う方法<変数宣言略>ZIPfile = fso.GetAbsolutePathName(ZIPfile)Set Shell = CreateObject("Shell.Application")ZIPfile = Shell.Namespace((ZIPfile)).Self.PathShell.ShellExecute ZIPfile, , , , 0<以下略>このソースはパソコン(WindowsXP)では動くのですが、サーバーだとshellexecuteが実行されている気配がありません。
おそらく、セキュリティのため制限されているのだと思いますが、なにか回避する方法は無いでしょうか?
UNZIP32.dllはライセンスの問題があると思いますので、できればそれ以外の方法で実現したいです。
よろしくお願いします。