Member 12624196 Ответов: 1

Vba shell32 распаковать без сохранения структуры каталогов из zip файла


Как извлечь все файлы или конкретный файл в одну папку из zip-файла, имеющего многоуровневую структуру каталогов ?
Я изучил "легко Zip / Unzip файлы с помощью Windows Shell32", но это воссоздает структуру каталогов из zip-файла при использовании .CopyHere

Причина использования метода VBA. copyhere заключается в том, чтобы сохранить проект самодостаточным.
В настоящее время для распаковки файлов используется внешнее приложение, но это вызывает другие проблемы, которых я хочу избежать.

Любая помощь или предложения будут очень признательны.

Что я уже пробовал:

http://www.codeproject.com/Tips/257193/Easily-Zip-Unzip-Files-using-Windows-Shell

1 Ответов

Рейтинг:
0

Maciej Los

Я бы предложил скачать[^] 7-zip[^]- очень хороший архиватор, который поддерживает множество форматов. Этот архив содержит 7za.exe, который может быть использован с аргументами команды. Это означает, что вы сможете перечислить содержимое архивного файла и извлечь именно то, что вам нужно.

Как им пользоваться? использовать VBA функция Shell[^] или API Функция ShellExecute[^] с аргументами.

Для получения аргументов командной строки перейдите по этой ссылке:
http://www.dotnetperls.com/7-zip-examples[^]
Версия командной строки руководство пользователя[^]


Member 12624196

Спасибо за ваш ответ Мацей,
Я должен был добавить к своему вопросу, что мне нужно использовать автономный метод, а не внешнее приложение / утилиту.
В настоящее время проект упакован с Paext.exe (старый un-archiver командной строки), но иногда "благонамеренные технические ребята на месте" делают очистку и удаляют внешнее приложение.
Отсюда и необходимость в самодостаточном методе vba.