|
|
|
Forum Member
      
участник
Last Login: 24.08.2007 17:56
Сообщ.: 37,
Visits: 372
|
|
Есть проблемка, а идей по её решению нет.
Может мозговым штурмом можно её решить. Суть проблемы:
VBA открывает файл тянет из него нужную инфу и закрывает без сохранения. функция сделана через for __ to, но когда этот гад натыкается на файл защищённый паролем всё встает намертво. Вопрос, такой как сделать проверку на наличие пасса и в случаи наличия не открывать файл?
кусок кода:
For i = 1 To 62511
On Error GoTo ErrorHandle:
DoEvents
Workbooks.Open Filename:=p(i)
ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
Call Module2.Listg(re2, lists)
If lists = True Then
Workbooks(FIMP2).Worksheets("Лист1").Rows("1").EntireRow.Insert
......... и т.д.
i=i+1
next i
____________________________________ Второе следствие из Закона Чизхолма. Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится.
|
|
|
|
|
Forum Member
      
участник
Last Login: 24.08.2007 17:56
Сообщ.: 37,
Visits: 372
|
|
Ещё вопросик по теме.
как при открытии файла указанным выше методом отключить обновление связей.
ActiveWorkbook.UpdateLinks = xlUpdateLinksNever не помогает.
____________________________________ Второе следствие из Закона Чизхолма. Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится.
|
|
|
|
|
Forum Member
      
участник
Last Login: 24.08.2007 17:56
Сообщ.: 37,
Visits: 372
|
|
Михря (23.08.2007)
как при открытии файла указанным выше методом отключить обновление связей.
ActiveWorkbook.UpdateLinks = xlUpdateLinksNever не помогает.
Сам спросил, сам ответил.
Application.AskToUpdateLinks = False
____________________________________ Второе следствие из Закона Чизхолма. Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 16.04.2008 11:44
Сообщ.: 366,
Visits: 2 473
|
|
True if the workbook has a protection password. Read-only Boolean.
Remarks
You can assign a protection password to a workbook by using the SaveAs method.
Example
This example displays a message if the active workbook has a protection password.
If ActiveWorkbook.HasPassword = True Then
MsgBox "Remember to obtain the workbook password" & Chr(13) & _
" from the Network Administrator."
End If
С уважением,
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Здесь советуют указать пустой параметр Password при открытии книги и перехватывать ошибки.
|
|
|
|
|
Forum Member
      
участник
Last Login: 24.08.2007 17:56
Сообщ.: 37,
Visits: 372
|
|
блин засада.
Пробую первое решение метод ActiveWorkbook.HasPassword
не работает потому, что:
часть кода:
.................
Workbooks.Open Filename:=p(i) 'сначала открываем, выскакивает окно с пассом и до if дело не доходит.
If ActiveWorkbook.HasPassword = True Then
i = i + 1
GoTo Line1
End If
......................
Второй вариант выдает ошибку уже не EXCel а VBA,
"P(2058) 1004 was generated by Microsoft Office Excel Неверный пароль. Убедитесь, что отключена клавиша CAPS LOCK и используется правильный регистр."
____________________________________ Второе следствие из Закона Чизхолма. Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится.
|
|
|
|
|
Forum Member
      
участник
Last Login: 24.08.2007 17:56
Сообщ.: 37,
Visits: 372
|
|
тоже не понятно с перехватчиком ошибок. если делать каждый шаг с ф8, то ошибочный пас летит в обработчик, если на автомате то вылетает ошибка!
____________________________________ Второе следствие из Закона Чизхолма. Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится.
|
|
|
|
|
Forum Member
      
участник
Last Login: 24.08.2007 17:56
Сообщ.: 37,
Visits: 372
|
|
Public Function OpenI(i, openIP)
Dim mypass As Object
On Error GoTo OpenI_Error
Set mypass = Workbooks.Open(Filename:=p(i), Password:="", IgnoreReadOnlyRecommended:=True)
openIP = True
Exit Function
OpenI_Error:
openIP = False
End Function
____________________________________ Второе следствие из Закона Чизхолма. Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится.
|
|
|
|