На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Архивирование папки %temp%\dir\ в ZIP архив
    В общем, надо заархивировать папку %temp%\dir\ в только что созданный архив %temp%\dir.zip в VB6. У меня получилось:

    ExpandedWrap disabled
      Option Explicit
      Dim Tmp As String
      Dim Zip As New Shell
      Dim ZipFile As String
      Dim fso As New FileSystemObject
      Dim ts As TextStream
      Dim WhatToZip As String
      Tmp = Environ("temp") ' Делаем Tmp равной местонахождению папки %temp%
      ZipFile = Tmp + "\Dir.ZIP"
      WhatToZip = Tmp + "\dir\"
      Set ts = fso.OpenTextFile(Path & "\Dir.ZIP", ForWriting, True) ' Создается файл
      ts.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)  ' Этот файл превращается в ZIP
      ts.Close ' Закрывается этот файл
      Set Zip = CreateObject("Shell.Application")
      Zip.NameSpace(ZipFile).CopyHere Zip.NameSpace(WhatToZip) ' И в этот ZIP файл архивируется папка


    Но выдается ошибка:

    ExpandedWrap disabled
      run-time error 91


    Если использовать:

    ExpandedWrap disabled
      Zip.NameSpace((ZipFile)).CopyHere Zip.NameSpace((WhatToZip))


    Снова выдается ошибка

    ExpandedWrap disabled
      run-time error '-2147024894' (80070002) automation error


    Помогите пожалуйста, уже много чего перепробывал, всё равно ошибка. :wall: Прошу мне не предлагать использование WinRARa в консоли. Заранее спасибо.
        Спасибо. Сейчас буду разбираться, после чего сообщу о результатах.
          Спасибо за помощь. Единственное - хотелось бы, чтобы моя программа была портативной, а для архивирования требуется, чтобы файл vbzip11.dll находился в папке, которая подлежит архивированию.
            zlib -- популярная открытая библиотека для работы с форматом zip.
              Цитата dark_timur @
              Спасибо за помощь.

              Пожалуйста.
                Может кому сгодится ;) , без библиотек :tong: , код взят из vbs скрипта :blush: , пользую давно, код не подводил :victory: .
                Скрытый текст

                Const ForReading = 1, ForWriting = 2, ForAppending = 8
                Dim MySource, MyTarget, MyZipName, MyHex, MyBinary, i
                Dim oShell, oApp, oFolder, oCTF, oFile
                Dim oFileSys

                MySource = "c:\Pic"
                MyTarget = "c:\Pic.zip"

                MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
                For i = 0 To UBound(MyHex)
                MyBinary = MyBinary & Chr(MyHex(i))
                Next
                Set oShell = CreateObject("WScript.Shell")
                Set oFileSys = CreateObject("Scripting.FileSystemObject")
                Set oCTF = oFileSys.CreateTextFile(MyTarget, True)
                oCTF.Write MyBinary
                oCTF.Close
                Set oCTF = Nothing
                Set oApp = CreateObject("Shell.Application")
                Set oFolder = oApp.NameSpace(MySource)
                If Not oFolder Is Nothing Then
                oApp.NameSpace(MyTarget).CopyHere oFolder.Items
                End If
                  Цитата yokoshima @
                  Может кому сгодится ;) , без библиотек :tong: , код взят из vbs скрипта :blush: , пользую давно, код не подводил :victory: .

                  :blink: чего??? что там под спойлером за код-то???? :ph34r:

                  так, ну а если по-делу, то еще как вариант можно для этих целей использовать консольный rar.exe

                  ExpandedWrap disabled
                    Использование: RAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...>
                                   <@файл-список...> <путь_для_извлечения\>
                     
                    <Команды>
                      a             Добавить файлы в архив
                      c             Добавить комментарий архива
                      cf            Добавить комментарии файлов
                      ch            Изменить параметры архива
                      cw            Записать комментарий архива в файл
                      d             Удалить файлы из архива
                      e             Извлечь файлы в текущий каталог
                      f             Освежить имеющиеся файлы в архиве
                      i[пар]=<стр>  Найти строку в архивах
                      k             Заблокировать архив
                      l[t,b]        Показать содержимое архива [техинфо,только имена файлов]
                      m[f]          Переместить в архив [только файлы]
                      p             Извлечь файл на устройство stdout
                      r             Исправить повреждённый архив
                      rc            Восстановить пропущенные тома
                      rn            Переименовать файлы в архиве
                      rr[N]         Добавить информацию для восстановления
                      rv[N]         Создать тома для восстановления
                      s[модуль|-]   Преобразовать архив в/из SFX
                      t             Протестировать архив
                      u             Обновить файлы в архиве
                      v[t,b]        Показать подробно содержимое архива [техинфо,только имена]
                      x             Извлечь файлы с полными путями
                     
                    <Ключи>
                      -             Прервать дальнейший поиск ключей
                      ac            Снять атрибут 'архивный' после архивации или извлечения
                      ad            Добавить имя архива к целевому пути
                      ag[формат]    Добавить к имени архива текущие дату и время
                      ai            Игнорировать файловые атрибуты
                      ao            Добавить файлы с установленным атрибутом 'архивный'
                      ap<путь>      Указать путь внутри архива
                      as            Синхронизировать содержимое архива
                      av            Добавить электронную подпись (в зарегистрированной версии)
                      av-           Не проверять электронную подпись
                      c-            Не показывать комментарии
                      cfg-          Запретить чтение конфигурации
                      cl            Преобразовывать имена файлов в нижний регистр
                      cu            Преобразовывать имена файлов в верхний регистр
                      df            Удалить файлы после архивации
                      dh            Открывать совместно используемые файлы
                      dr            Удалить файлы в Корзину
                      ds            Не сортировать файлы при добавлении в непрерывный архив
                      dw            Уничтожить (затереть) файлы после архивации
                      e[+]<атр>     Исключить/включить в обработку файлы с указанными атрибутами
                      ed            Не добавлять пустые каталоги
                      en            Не создавать блок 'конец архива'
                      ep            Исключить пути из имён
                      ep1           Исключить базовый каталог из имён
                      ep2           Сохранять полные пути файлов
                      ep3           Сохранять полные пути файлов, включая буквы дисков
                      f             Освежить имеющиеся файлы
                      hp[пароль]    Шифровать содержимое файлов и оглавление архива
                      id[c,d,p,q]   Запретить вывод сообщений
                      ieml[адрес]   Отправить архив по e-mail
                      ierr          Отправлять все сообщения на stderr
                      ilog[имя]     Записывать протокол ошибок в файл (в зарегистрированной версии)
                      inul          Запретить вывод всех сообщений
                      ioff          Выключить компьютер по завершении операции
                      isnd          Использовать звуковые сигналы
                      k             Заблокировать архив
                      kb            При извлечении сохранять на диске повреждённые файлы
                      m<0..5>       Метод сжатия (0-без сжатия...3-обычный...5-максимальный)
                      mc<параметр>  Установить дополнительные параметры архивации
                      md<размер>    Размер словаря, в Кб (64,128,256,512,1024,2048,4096 или A..G)
                      ms[расш;расш] Указать расширения файлов для архивирования без сжатия
                      mt<потоки>    Установить число потоков
                      n<файл>       Включить в обработку только указанный файл
                      n@            Прочитать имена файлов для включения в обработку с stdin
                      n@<список>    Включить в обработку файлы, указанные в файле-списке
                      o[+|-]        Установить режим перезаписи
                      oc            Устанавливать атрибут NTFS 'сжатый'
                      or            Переименовывать файлы автоматически
                      os            Сохранять потоки NTFS
                      ow            Сохранять/восстанавливать владельца и группу файла
                      p[пароль]     Указать пароль шифрования архива
                      p-            Не спрашивать пароль
                      r             Рекурсивно с подкаталогами
                      r-            Запретить рекурсию
                      r0            Рекурсивно с подкаталогами в соответствии с шаблоном
                      ri<P>[:<S>]   Приоритет (0-по умолчанию,1-мин..15-макс) и время простоя (мс)
                      rr[N]         Добавить информацию для восстановления
                      rv[N]         Создать тома для восстановления
                      s[<N>,v[-],e] Создать непрерывный архив
                      s-            Запретить создание непрерывных архивов
                      sc<наб>[об]   Указать набор символов (и объект)
                      sfx[модуль]   Создать самораспаковывающийся (SFX) архив
                      si[имя]       Читать данные с устройства стандартного ввода (stdin)
                      sl<размер>    Обрабатывать файлы размером меньше указанного
                      sm<размер>    Обрабатывать файлы размером больше указанного
                      t             Протестировать файлы после архивации
                      ta<дата>      Обрабатывать файлы, изменённые после <даты> (ГГГГММДДЧЧММСС)
                      tb<дата>      Обрабатывать файлы, изменённые до <даты> (ГГГГММДДЧЧММСС)
                      tk            Сохранять исходное время архива
                      tl            Устанавливать время архива по времени новейшего файла
                      tn<период>    Обрабатывать файлы не старее, чем <период> времени
                      to<период>    Обрабатывать файлы более старые, чем <период> времени
                      ts<m,c,a>[N]  Хранить/восстанавливать время изменения,создания,доступа файла
                      u             Обновить файлы
                      v             Создавать архивные тома с автоопределением размера
                      v<N>[k,b,m,M] Создавать архивные тома размером=<N>*1000 [*1024, *1, ...]
                      vd            Удалять содержимое сменного диска перед созданием тома
                      ver[n]        Управление версиями файла
                      vn            Использовать старую схему именования томов
                      vp            Делать паузу перед каждым следующим томом
                      w<путь>       Использовать указанный каталог для хранения временных файлов
                      x<файл>       Не обрабатывать указанный файл/шаблон
                      x@            Прочитать имена исключаемых из обработки файлов с stdin
                      x@<список>    Не обрабатывать файлы/шаблоны, указанные в файле-списке
                      y             Подразумевать ответ 'Да' на все запросы
                      z[файл]       Прочитать комментарий архива из файла
                  Сообщение отредактировано: Seriy-Coder -
                    Цитата Seriy-Coder @
                    Цитата yokoshima @
                    Может кому сгодится ;) , без библиотек :tong: , код взят из vbs скрипта :blush: , пользую давно, код не подводил :victory: .

                    :blink: чего??? что там под спойлером за код-то???? :ph34r:

                    так, ну а если по-делу, то еще как вариант можно для этих целей использовать консольный rar.exe

                    ExpandedWrap disabled
                      Использование: RAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...>
                                     <@файл-список...> <путь_для_извлечения\>
                       
                      <Команды>
                        a             Добавить файлы в архив
                        c             Добавить комментарий архива
                        cf            Добавить комментарии файлов
                        ch            Изменить параметры архива
                        cw            Записать комментарий архива в файл
                        d             Удалить файлы из архива
                        e             Извлечь файлы в текущий каталог
                        f             Освежить имеющиеся файлы в архиве
                        i[пар]=<стр>  Найти строку в архивах
                        k             Заблокировать архив
                        l[t,b]        Показать содержимое архива [техинфо,только имена файлов]
                        m[f]          Переместить в архив [только файлы]
                        p             Извлечь файл на устройство stdout
                        r             Исправить повреждённый архив
                        rc            Восстановить пропущенные тома
                        rn            Переименовать файлы в архиве
                        rr[N]         Добавить информацию для восстановления
                        rv[N]         Создать тома для восстановления
                        s[модуль|-]   Преобразовать архив в/из SFX
                        t             Протестировать архив
                        u             Обновить файлы в архиве
                        v[t,b]        Показать подробно содержимое архива [техинфо,только имена]
                        x             Извлечь файлы с полными путями
                       
                      <Ключи>
                        -             Прервать дальнейший поиск ключей
                        ac            Снять атрибут 'архивный' после архивации или извлечения
                        ad            Добавить имя архива к целевому пути
                        ag[формат]    Добавить к имени архива текущие дату и время
                        ai            Игнорировать файловые атрибуты
                        ao            Добавить файлы с установленным атрибутом 'архивный'
                        ap<путь>      Указать путь внутри архива
                        as            Синхронизировать содержимое архива
                        av            Добавить электронную подпись (в зарегистрированной версии)
                        av-           Не проверять электронную подпись
                        c-            Не показывать комментарии
                        cfg-          Запретить чтение конфигурации
                        cl            Преобразовывать имена файлов в нижний регистр
                        cu            Преобразовывать имена файлов в верхний регистр
                        df            Удалить файлы после архивации
                        dh            Открывать совместно используемые файлы
                        dr            Удалить файлы в Корзину
                        ds            Не сортировать файлы при добавлении в непрерывный архив
                        dw            Уничтожить (затереть) файлы после архивации
                        e[+]<атр>     Исключить/включить в обработку файлы с указанными атрибутами
                        ed            Не добавлять пустые каталоги
                        en            Не создавать блок 'конец архива'
                        ep            Исключить пути из имён
                        ep1           Исключить базовый каталог из имён
                        ep2           Сохранять полные пути файлов
                        ep3           Сохранять полные пути файлов, включая буквы дисков
                        f             Освежить имеющиеся файлы
                        hp[пароль]    Шифровать содержимое файлов и оглавление архива
                        id[c,d,p,q]   Запретить вывод сообщений
                        ieml[адрес]   Отправить архив по e-mail
                        ierr          Отправлять все сообщения на stderr
                        ilog[имя]     Записывать протокол ошибок в файл (в зарегистрированной версии)
                        inul          Запретить вывод всех сообщений
                        ioff          Выключить компьютер по завершении операции
                        isnd          Использовать звуковые сигналы
                        k             Заблокировать архив
                        kb            При извлечении сохранять на диске повреждённые файлы
                        m<0..5>       Метод сжатия (0-без сжатия...3-обычный...5-максимальный)
                        mc<параметр>  Установить дополнительные параметры архивации
                        md<размер>    Размер словаря, в Кб (64,128,256,512,1024,2048,4096 или A..G)
                        ms[расш;расш] Указать расширения файлов для архивирования без сжатия
                        mt<потоки>    Установить число потоков
                        n<файл>       Включить в обработку только указанный файл
                        n@            Прочитать имена файлов для включения в обработку с stdin
                        n@<список>    Включить в обработку файлы, указанные в файле-списке
                        o[+|-]        Установить режим перезаписи
                        oc            Устанавливать атрибут NTFS 'сжатый'
                        or            Переименовывать файлы автоматически
                        os            Сохранять потоки NTFS
                        ow            Сохранять/восстанавливать владельца и группу файла
                        p[пароль]     Указать пароль шифрования архива
                        p-            Не спрашивать пароль
                        r             Рекурсивно с подкаталогами
                        r-            Запретить рекурсию
                        r0            Рекурсивно с подкаталогами в соответствии с шаблоном
                        ri<P>[:<S>]   Приоритет (0-по умолчанию,1-мин..15-макс) и время простоя (мс)
                        rr[N]         Добавить информацию для восстановления
                        rv[N]         Создать тома для восстановления
                        s[<N>,v[-],e] Создать непрерывный архив
                        s-            Запретить создание непрерывных архивов
                        sc<наб>[об]   Указать набор символов (и объект)
                        sfx[модуль]   Создать самораспаковывающийся (SFX) архив
                        si[имя]       Читать данные с устройства стандартного ввода (stdin)
                        sl<размер>    Обрабатывать файлы размером меньше указанного
                        sm<размер>    Обрабатывать файлы размером больше указанного
                        t             Протестировать файлы после архивации
                        ta<дата>      Обрабатывать файлы, изменённые после <даты> (ГГГГММДДЧЧММСС)
                        tb<дата>      Обрабатывать файлы, изменённые до <даты> (ГГГГММДДЧЧММСС)
                        tk            Сохранять исходное время архива
                        tl            Устанавливать время архива по времени новейшего файла
                        tn<период>    Обрабатывать файлы не старее, чем <период> времени
                        to<период>    Обрабатывать файлы более старые, чем <период> времени
                        ts<m,c,a>[N]  Хранить/восстанавливать время изменения,создания,доступа файла
                        u             Обновить файлы
                        v             Создавать архивные тома с автоопределением размера
                        v<N>[k,b,m,M] Создавать архивные тома размером=<N>*1000 [*1024, *1, ...]
                        vd            Удалять содержимое сменного диска перед созданием тома
                        ver[n]        Управление версиями файла
                        vn            Использовать старую схему именования томов
                        vp            Делать паузу перед каждым следующим томом
                        w<путь>       Использовать указанный каталог для хранения временных файлов
                        x<файл>       Не обрабатывать указанный файл/шаблон
                        x@            Прочитать имена исключаемых из обработки файлов с stdin
                        x@<список>    Не обрабатывать файлы/шаблоны, указанные в файле-списке
                        y             Подразумевать ответ 'Да' на все запросы
                        z[файл]       Прочитать комментарий архива из файла

                    Нужно просто взять и проверить ;) , я этим кодом постоянно пользуюсь, ни каких проблем :-? .
                    Как я уже говорил код не мой :no: , а выдран из vbs, код отправки архива на мыло.
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0473 ]   [ 15 queries used ]   [ Generated: 19.05.24, 16:37 GMT ]