Страницы: 1
RSS
Открытие запароленного файла
 
Написала макрос, в котором перебираются все файлы в указанной папке: каждый файл открывается, из него копируется определенная информация в текущий и затем он закрывается.

Когда запускаю макрос перебора файлов, вылезает ошибка "Unable to read file" и ссылается на строку:

Код
Workbooks.Open Path & Report, , , , "1234", "1234", True, , , True
 

Все файлы в папке запароленные. Пароль устанавливается тоже макросом:

Код
With ActiveWorkbook
        .Password = "1234"
        FName = K & "_Отчет" & ".xls"
        .SaveCopyAs Filename:=Path & FName
        .Password = ""
        End With
 
Подскажите, пожалуйста, в чем проблема?
Большое спасибо!
Изменено: Lera_Lera - 19.09.2014 12:36:07
 
а файл-то существует, который вы открываете? открывается вручную? пароль установлен на файле? тот ли пароль? переменные Path и Report стринговые? эти переменные непустые? ....
без примера ошибки в файле-примере можно гадать и гадать, и гадать...
 
А зачем Вы второй пароль указываете? Первый - для открытия. Второй - не для этого, а для записи в защищенные книги.
Уберите второй пароль - Вы строкой .Password устанавливаете пароль только на открытие. Вот только его и указывайте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Jack, попробовала открыть запароленные файлы, которые перебираются. 1й попросил ввести пароль и открылся, а второй выдал кучу сообщений и пароль попросил ввести дважды...
Не понимаю, почему он первый отчет нормально сохранил, а остальные коряво?
не могу прикрепить картинки ошибок, вылезает ошибка "При сохранении файла произошла ошибка".
 
The_Prist, исправила на
Код
Workbooks.Open Path & Report, , , , "1234"
 
но все равно не работает, т.к., как я уже писала, почему-то нормально запаролился только один файл - 1й, а остальные коряво, кучу сообщений при открытии выдают...первое из которых "Unable to read file"...
Почему так может быть?
 
The_Prist, вот часть кода, которая отчеты создает:
Код
 For i = 3 To LastRow_Pivot - 1
        K = PVT.Cells(i, 1)
        
            With Report
                .Unprotect "1234" 
                .Range("$A$16:$O$" & LastRow_Total_Report).AutoFilter Field:=2, Criteria1:=K 
                .Protect "1234" 
            End With
              
            
       Path = "C:\Users\egoryuno\Documents\test\"
                                                
        ActiveWorkbook.Protect Structure:=True, Windows:=False
               
             With ActiveWorkbook
                .Password = "1234"
                FName = K & "_Отчет" & ".xls"
                .SaveCopyAs Filename:=Path & FName
                .Password = ""
            End With 
        ActiveWorkbook.Protect Structure:=False, Windows:=False
    Next i
       
Report.Unprotect "1234"
 
Подскажите, что здесь может быть не так?
 
Зачем два раза ActiveWorkbook.Protect? Может после сохранения надо .Unprotect "1234"?
Плюс хотелось бы знать, что в FName хранится - может расширение не совпадает с расширением текущей книги.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, расширения совпадают, изменила код, но все равно нормально сохраняет только 1й отчет. а начиная со второго вылезают сообщения:
1. ввожу пароль
2. file error data may have been lost -->жму ок
3. Excel found unreadable content in 2_Отчет.xls.......--> жму Yes
4. Опять ввожу пароль
5. file error data may have been lost -->жму ок
6. excel was able to open the file by repairing or removing the unreadable content --> жму Close и только после этого отчет открывается.

А если первый отчет открывать, то:
1. ввожу пароль
2. file error data may have been lost -->жму ок и отчет открывается
Код
For i = 3 To LastRow_Pivot - 1
        K = PVT.Cells(i, 1)        
            With Report
                .Unprotect "1234" 
                .Range("$A$16:$O$" & LastRow_Total_Report).AutoFilter Field:=2, Criteria1:=K 
                .Protect "1234" 
            End With              
          
            Path = "C:\Users\egoryuno\Documents\test\"                          
              
             With ActiveWorkbook
                .Password = "1234"
                FName = K & "_Отчет" & ".xls"
                .SaveCopyAs Filename:=Path & FName
                .Unprotect "1234"
                .Password = ""
            End With
    Next i
 
Без файлов сказать нечего.
Нужен файл исходный, из которого делаете эти файлы. Проблема где-то в коде и не факт, что в том куске, который Вы демонстрируете.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, а я файл не могу прикрепить, какая-то ошибка, ничего не крепится(
 
Значит надо правила прочитать...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
файл не более 100Кб ;)
 
Есть файлообменники, если урезать файл нет возможности(а сейчас именно тот вариант).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,V, Jack,  извините, файлик  я попозже чуток выложу какой надо. Спасибо всем)
 
The_Prist,V, Jack, вот файлик.
В нем таблица, которая в цикле фильтруется по коду магазина, затем файл с таблицей в отфильтрованном виде сохраняется как копия.
Критерии фильтра берутся из сводной таблицы на другом листе, сводная таблица предварительно создается...Думаю, что файлики с отчетами коряво паролятся из-за нее. Но, что с ней не так, не пойму, ошибок никаких не выдает...Может, вы подскажете чего-нибудь?
Большое спасибо!
Если эту проблему решу, то тогда и с открытием файликов не будет проблем..
 
А так ли необходима сводная в конечных файлах? Может одного листа хватит? Вроде того:
Код
'создаем копию отчета
        FName = K & "_Отчет" & ".xls"
        Application.DisplayAlerts = 0
        ActiveSheet.Copy
        With ActiveWorkbook
            .SaveAs Path & FName, ThisWorkbook.FileFormat, "1234"
            .Close 0
        End With
    Next i
    Application.DisplayAlerts = 1
    Report.Unprotect "1234"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Спасибо огромное! Работает как надо!!! :)
Страницы: 1
Читают тему
Наверх