Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2010, 20:28   #1
Lubocka
Пользователь
 
Регистрация: 02.02.2010
Сообщений: 11
По умолчанию Как создать и сохранить несколько файлов в .zip

Надо в Excel 2003 имеющие 2-3 файла упаковать в zip-файл
как это сделать?
1) как создать файл.zip?
2) как всунуть в него мои 2-3 файла?
3) как потом его сохранить?
Lubocka вне форума Ответить с цитированием
Старый 02.02.2010, 22:05   #2
0mega
Форумчанин
 
Регистрация: 12.09.2009
Сообщений: 232
По умолчанию

Все имеющиеся у Вас файлы поместите в одну папку.
Кликаем правой мышкой по этой папке. Выбираем " добавить в ахив " ( в компьютерах Macintosh - "Сжать") и отмечаем ZIP
После ZIPования Вашу папку можно отправлять по почте выкладывать на форумах и т.д.
По умолчанию все Windows компьютеры сжимают в формате RAR.
Но формат RAR не все компьютеры умеют раскрывать.
Не забывайте отмечать ZIP

Последний раз редактировалось 0mega; 02.02.2010 в 22:19.
0mega вне форума Ответить с цитированием
Старый 02.02.2010, 22:27   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
По умолчанию все Windows компьютеры сжимают в формате RAR.
глупости! То, что WinRAR стоит почти на каждом компьютере не делает его ни бесплатным, так же, как и не делает его входящим в состав Windows!
Нормальная Windows не умеет не только сжимать в формат RAR, но и даже распаковывать!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2010, 22:46   #4
0mega
Форумчанин
 
Регистрация: 12.09.2009
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Нормальная Windows не умеет не только сжимать в формат RAR, но и даже распаковывать!!
Ув. Сергей.
Есть хорошая поговорка: " свет не только что в оконце, за окном еще больше"
Я не знаю какую Windows Вы называете нормальной, лично я имел в виду Macintosh.
Apple свои машины еще при "рождении" комплектуется встроенным ZIP-архиватором
0mega вне форума Ответить с цитированием
Старый 02.02.2010, 22:57   #5
Lubocka
Пользователь
 
Регистрация: 02.02.2010
Сообщений: 11
По умолчанию

извиняюсь, но я немного неправильно выразила свое пожелание, я хочу создать программным путем zip-файл, наподобии как это сделано в 1С 8.1
например:
ZipFile = Новый ЗаписьZipФайла(КаталогДанных +"\"+ИмяФайлаZip);
ZipFile.Добавить(КаталогДанных +"\"+ИмяФайла1);
ZipFile.Добавить(КаталогДанных +"\"+ИмяФайла2);
ZipFile.Записать();


хочу также только в Excel 2003 с помощью Visual Basic
Lubocka вне форума Ответить с цитированием
Старый 02.02.2010, 23:00   #6
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

http://www.rondebruin.nl/windowsxpzip.htm

Код:
Sub Zip_File_Or_Files()
    Dim strDate As String, DefPath As String, sFName As String
    Dim oApp As Object, iCtr As Long, i As Long
    Dim FName, vArr As Variant, FileNameZip As String

    'УКАЖИТЕ СВОЮ ПАПКУ, КУДА ПОМЕСТИТЬ АРХИВ ZIP
    DefPath = "C:\Temp\"

    'DefPath = Application.DefaultFilePath 'Мои документы
    If Right(DefPath, 1) <> "\" Then DefPath = DefPath & "\"

    'имя будущего архива
    strDate = Format(Now, " yy-mm-dd h-mm-ss")
    FileNameZip = DefPath & "Архив_" & strDate & ".zip"

    'Browse to the file(s), use the Ctrl key to select more files
    'выбираем файл(ы), используйте кнопку Ctrl, чтобы выбрать несколько файлов
    FName = Application.GetOpenFilename(filefilter:="Все файлы Microsoft Office Excel (*.xl*),*.xls,Все файлы(*.*),*.*", _
        MultiSelect:=True, Title:="Укажите файлы для архивации")
    
    If IsArray(FName) = False Then
        'do nothing
    Else
        'Create empty Zip File
        'создаём пустой Zip файл
        NewZip (FileNameZip)
        Set oApp = CreateObject("Shell.Application")
        For iCtr = LBound(FName) To UBound(FName)
            vArr = Split97(FName(iCtr), "\")
            sFName = vArr(UBound(vArr))
            If bIsBookOpen(sFName) Then
                MsgBox "Вы не можете заархивировать файл, который открыт!" & vbLf & _
                       "Пожалуйста закройте: " & FName(iCtr)
            Else
                'Copy the file to the compressed folder
                'копируем файл в сжатую папку
                i = i + 1
                oApp.Namespace((FileNameZip)).CopyHere FName(iCtr)
                'Keep script waiting until Compressing is done
                'специальная задержка, чтобы процесс архивации успел закочится
                On Error Resume Next
                Do Until oApp.Namespace((FileNameZip)).items.Count = i
                    DoEvents
                    'Application.Wait (Now + TimeValue("0:00:01"))
                Loop
                On Error GoTo 0
            
            End If
        Next iCtr
        MsgBox "Архив сохранён в: " & FileNameZip
    End If
    Set oApp = Nothing

End Sub

Sub NewZip(sPath)
'Create empty Zip File
    Dim oFSO As Object, arrHex(), sBin As String, i As Long
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    arrHex = 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(arrHex)
        sBin = sBin & Chr(arrHex(i))
    Next
    With oFSO.CreateTextFile(sPath, True)
        .Write sBin
        .Close
    End With
End Sub

Function Split97(sStr As Variant, sdelim As String) As Variant
'Tom Ogilvy
    Split97 = Evaluate("{""" & Application.Substitute(sStr, sdelim, """,""") & """}")
End Function

Function bIsBookOpen(ByRef szBookName As String) As Boolean
' Rob Bovey
    On Error Resume Next
    bIsBookOpen = Not (Application.Workbooks(szBookName) Is Nothing)
End Function

Последний раз редактировалось Pavel55; 02.02.2010 в 23:57.
Pavel55 вне форума Ответить с цитированием
Старый 03.02.2010, 00:10   #7
Lubocka
Пользователь
 
Регистрация: 02.02.2010
Сообщений: 11
По умолчанию

Спасибо. Ваша помощь мне очень помогла.
Все работает как я хотела

Ну просто ОГРОМНОЕ спасибо.

Последний раз редактировалось Lubocka; 03.02.2010 в 00:30.
Lubocka вне форума Ответить с цитированием
Старый 09.08.2012, 20:25   #8
88ra
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 24
По умолчанию

Добрый день! Подскажите, уважаемые!
Использовал вышеуказанный код, работает - если вручную выбирать файлы.
Если публикую массив FName, и записываю значения в другой процедуре, то не работает - ошибка 9 на:
oApp.Namespace((FileNameZip)).CopyH ere FName(iCtr)
ну а дальше по тексту, в бесконечный цикл впадает
88ra вне форума Ответить с цитированием
Старый 09.08.2012, 20:50   #9
88ra
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 24
По умолчанию

проблема решилась добавлением пары скобок:

oApp.Namespace((FileNameZip)).CopyH ere (FName(iCtr))
88ra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохоанить, Сохранить как, Открыть несколько элементов в одном файле Polotenchik Общие вопросы Delphi 9 01.08.2009 13:37
Как сохранить листы (Лист1-Лист2-Лист3 и т.д.) из одного файла в несколько разных? Kilobox Microsoft Office Excel 4 28.01.2009 18:39
Как обработать несколько файлов? never_mind Microsoft Office Excel 3 28.01.2009 11:57
Zip-архив и названия файлов украинскими буквами Richardcv Общие вопросы по Java, Java SE, Kotlin 0 14.01.2009 17:38
Как удалить несколько файлов? Kashp Общие вопросы Delphi 2 23.08.2007 13:38