Windowsエクスプローラで圧縮されたフォルダ(zipファイル)を抽出することができますzipファイルを解凍するWindows API?
プログラムで同じ方法を使用してzipファイルを抽出するAPIまたはコマンドラインはありますか?
Windowsエクスプローラで圧縮されたフォルダ(zipファイル)を抽出することができますzipファイルを解凍するWindows API?
プログラムで同じ方法を使用してzipファイルを抽出するAPIまたはコマンドラインはありますか?
あなたはこのVBScriptのスクリプトを使用することができます。
'Adapted from http://www.robvanderwoude.com/vbstech_files_zip.html
strFile = "c:\filename.zip"
strDest = "c:\files"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(strDest) Then
objFSO.CreateFolder(strDest)
End If
UnZipFile strFile, strDest
Sub UnZipFile(strArchive, strDest)
Set objApp = CreateObject("Shell.Application")
Set objArchive = objApp.NameSpace(strArchive).Items()
Set objDest = objApp.NameSpace(strDest)
objDest.CopyHere objArchive
End Sub
私は、Excel 2010の下で上記の機能Sub UnZipFile(...)
を試してみましたが、それが作業ませんでした:実行時エラー「91」(オブジェクト変数またはWithブロックライン
Set objArchive = objApp.Namespace(strArchive).Items()
と並んで)設定されていない
Set objDest = objApp.Namespace(strDest)
も黙って動作していません:実行後、objDest
はまだ何もありません!
マイクロソフトの.Namespace()
は、パラメータとしてオブジェクト、文字列定数または文字列変数のいずれかを受け入れます。
Set objArchive = objApp.Namespace(**CStr(** strArchive **)**).Items()
Set objDest = objApp.Namespace(**CStr(** strDest **)**)
または代替の回避策
Set objArchive = objApp.Namespace(**"" &** strArchive).Items()
Set objDest = objApp.Namespace(**"" &** strDest)
そしてラインobjDest.CopyHere objArchive
も働いていませんでした:保存先のフォルダが空に残っ!の文字列変数で不審な回避策を必要としている問題は、多くの場合がありますここで
他の環境でも、おそらくエクセル2010での作業とされているバージョン、:
Sub UnZipFile(strZipArchive As String, strDestFolder As String)
Dim objApp As Object
Dim vItem As Variant
Dim objDest As Object
Set objApp = CreateObject("Shell.Application")
Set objDest = objApp.Namespace(CStr(strDestFolder))
For Each vItem In objApp.Namespace(CStr(strZipArchive)).Items
objDest.CopyHere vItem
Next vItem
End Sub
は、C#やVBのユーザーのために、あなたはMSDNからの回答を確認することができます。 https://msdn.microsoft.com/en-us/library/ms404280(v=vs.100).aspx
のために.net 4.x、MSDNのサンプルコードはこちら
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
}
ありがとうございます。しかし、最初のリンクには外部zip.exeファイルが必要です。そのzip.exeがどこにあるのか知っていますか? 明らかに、SharpZipLibはWinZipを使って作成したzipファイルを解凍できません。 – Aximili
他のプロジェクトのものですなぜあなたはそれを一つにまとめることができないのだろうか? – Aximili