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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2009, 16:12   #1
eda
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 78
По умолчанию Ошибка при архивировании файлов

Есть вот такой фрагмент кода:
Код HTML:
Dim oApp As Object
Set oApp = CreateObject("Shell.Application")
Dim copiedFiles As New Dictionary

k = -1
With aSheet.Hyperlinks
    'On Error GoTo Cleanup
    PrepareOK = True ' <-- подготовка к архивированию окончена
    ArchOK = False
    For i = 1 To .count
        If .item(i).Range.Column = COL_FILE Then
            tmpRow = .item(i).Range.row
            For j = 1 To UBound(FileList)
                If tmpRow = FileList(j) Then
                    If copiedFiles.Exists(.item(i).name) Then
                        MsgBox "Попытка повторно записать в архив файл с именем " & .item(i).name & vbCrLf & "Внимание! В архиве нет структуры папок, поэтому архивируйте файлы с совпадающими именами отдельно!"
                        GoTo Cleanup
                    Else
                        ' Добавим в коллекцию.
                        copiedFiles.Add .item(i).name, i
                        ' Вычислим путь к этому файлу
                        tmpStr1 = IIf((Left(.item(i).Address, 2) = "\\") Or (Mid(.item(i).Address, 2, 2) = ":\"), .item(i).Address, QADir & .item(i).Address)
                        If oFS.FileExists(tmpStr1) Then
                            k = k + 1                            
                            ' 1. Copy the file to the compressed folder
                            tmpStr1 = Replace(tmpStr1, "/", "\")
                            oApp.Namespace(aN & "\").CopyHere CStr(tmpStr1)
                        Else
                            MsgBox "Файл с полным именем" & vbCrLf & vbCrLf & _
                                   tmpStr1 & vbCrLf & vbCrLf & _
                                   "не существует.", vbExclamation, "Файл не найден"
                        End If
                    End If
                    Exit For
                End If
            Next j
        End If
    Next i
Возникает ошибка: Method 'NameSpace' of object 'IShellDispatch4' failed. Какие могут быть причины?
eda вне форума Ответить с цитированием
Старый 10.07.2009, 16:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Какие могут быть причины?
В строку oApp.Namespace(aN & "\").CopyHere CStr(tmpStr1)
передаются неверные параметры - aN или tmpStr1

Поставьте перед этой строкой вот что:
Код:
MsgBox CStr(tmpStr1) & vbNewLine & vbNewLine & aN & "\"
Теперь Вы сразу увидите, в чём ошибка.
(обратите внимание на наличие лишних\пропущенных слешей и запрещённых символов в именах файлов\папок)
EducatedFool вне форума Ответить с цитированием
Старый 10.07.2009, 17:28   #3
eda
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 78
По умолчанию

C именами все в порядке, проверила.
eda вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приложение которое выводит список файлов текущего каталога и при клике на любом из файлов откроет его. LimanSSk Общие вопросы Delphi 2 18.05.2009 16:03
Копирование файлов при помощи потоков Aleshin Помощь студентам 0 25.04.2009 14:00
Ошибка при линковке Лотос Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 25 22.02.2009 20:24
Формирование листа при множественом выборе файлов Руслантус Общие вопросы C/C++ 2 09.08.2008 23:16
Проблемы при удалении файлов Pavel55 Общие вопросы Delphi 7 10.01.2008 00:45