Перезаписать файл при копировании в zip-файл с помощью Microsoft Shell COM Library

Я использую библиотеку Microsoft Shell Controls and Automation COM из VBA. У меня есть zip-файл, и я копирую файл в zip-файл. Проблема в том, что файл уже существует и он выдает диалоговое окно, в котором говорится: «В этом месте уже есть файл с тем же именем, который вы хотите: a) скопировать и заменить или b) не копировать». Я хотел бы программно сказать «Копировать и заменить» (переписать!).

Я думаю, что эквивалент на платформе .NET имеет страницу документации по адресу http://msdn.microsoft.com/en-us/library/windows/desktop/ms723207%28v=vs.85%29.aspx, но я попытался их разнообразие.

Кроме того, я соглашусь удалить исходный элемент, чтобы сложение не удавалось без проблем; К сожалению, я не смог найти метод удаления элемента.

Я использую Windows 8, 64-разрядную версию. Я в Excel (14) VBA (7) и библиотека, которую я использую, находится в C: \ Windows \ SysWOW64 \ shell32.dll

Вот глава IDL библиотеки типов, о которой я говорю

// Generated .IDL file (by the OLE/COM Object Viewer) // // typelib filename: shell32.dll [ uuid(50A7E9B0-70EF-11D1-B75A-00A0C90564FE), version(1.0), helpstring("Microsoft Shell Controls And Automation") ] library Shell32 { // TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046} 

Мой предпочтительный ответ – использование метода MoveHere, чтобы переместить старый путь до добавления. Таким образом, не открывается диалоговое окно. Спасибо всем.

Вот как вы можете удалить файл из zip с помощью оболочки:

 Sub DeleteFromZip() Dim fldr, zpath, itm, vrbs, vrb zpath = "C:\_stuff\test\test.zip" Set fldr = CreateObject("Shell.Application").Namespace(zpath) For Each itm In fldr.items If itm.Name = "IMG_0000322_2014.03.11.jpg" Then itm.invokeverb "Delete" Exit For End If Next itm End Sub 

Это действительно увеличивает диалог подтверждения – см. Эту ссылку, чтобы избежать этого:

FolderItem.InvokeVerb («Удалить») без подтверждения

  • Как получить изменение сценария с оболочкой, которое будет распознано открытым приложением
  • Командная оболочка Excel VBA для поиска Chrome
  • Сопровождение вывода команды оболочки, выполненной в VBA, на конкретную оболочку
  • Удаление всей записи, если строка меньше требуемой суммы
  • Разделить 1 ряд на несколько
  • Запуск ac # .EXE с аргументами через WScript.Shell VBA
  • Экспорт в Excel из оболочки django
  • Excel VBA запускает команду оболочки на Mac?
  • Разархивируйте файлы .gz
  • Команда excel shell запускает скрипт bash
  • Как довести конечный минус до ведущего минуса в команде tr
  • Interesting Posts

    Ядро Openxml возвращает InnerText не фактическое значение

    Формула массива в Excel, выполненная через VBA Без или без .ArrayFormula для динамического диапазона

    как извлечь несколько данных столбца в Excel VBA

    Выполнить запрос sql в столбце excel

    Поверните диапазон значений в ячейке в список, разделенный запятыми

    Проблема с веб-запросом в Excel

    Как создать представление из файла excel с помощью Python? Я новичок на обоих языках

    MS Excel: как получить измененный формат даты при экспорте в формате csv?

    Функция поиска Excel-VBA не рассматривает первую строку столбца

    Сумма POI Apache не оценивается

    Как графические приложения вычисляют область просмотра?

    c # запрос импорта Excel

    Oracle – привязка к CSV-файлу, но Excel разбивает «$ 10 000» на два столбца

    Добавить префикс с текстом, взятым из другого столбца при вводе данных в Excel

    Excel VBA представляет электронную почту для нескольких приложений To, CC и BCC

    Давайте будем гением компьютера.