powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как определить, есть ли пароль не книге (excel) не открывая ее?
1 сообщений из 1, страница 1 из 1
Как определить, есть ли пароль не книге (excel) не открывая ее?
    #37414527
Товарищи, буду признателен за помощь.

Есть код (VBA), который обрабатывает почтовый ящик и проверяет вложения на excel и сортирует их по ранее заданным шаблонам.
В каждом типе шаблонов есть определенный скрытый лист и в первой ячейке указан его тип.
В день порядка 1500 писем(1500 файлов ексель).

При проверке писем, я не открываю excel, а беру значение из скрытого листа с помощью функциии :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 
Function getvalue(file_path As String, sht_name As String, cell_RC As String) As String
Dim file_path As String
Dim file_name As String
file_dir = Left(x, InStrRev(file_path , "\", - 1 ))
file_name = Right(file_path , Len(file_path ) - InStrRev(file_path, "\", - 1 ))
getvalue = ExecuteExcel4Macro("'" & file_dir & "[" & file_name & "]" & sht_name & "'!" & cell_RC)
End Function


Этот способ очень эффективный по сравнению с открытием книги
(Set awb = Workbooks.Open(FileName:=file_path , UpdateLinks:=0, ReadOnly:=False, Password:="", WriteResPassword:=True, ignoreReadOnlyRecommended:=True, CorruptLoad:=xlRepairFile))

Но столкнулся с проблемой, что если книга с паролем, то всплывает окно с просьбой вести пароль и процедура стоппорится.
Никакие displayalersts=false не помагают.

Единственный вариант, который приходит на ум через OLEDB вытаскивать структуру файла, и если выдает ошибку "не удалось дешифровать файл, то игнорировать его:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 
on error resume next
 With New ADODB.Connection
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & filepath & ";Extended Properties=Excel 8.0;"
    .CursorLocation = adUseClient
    .Open
    With .OpenSchema(adSchemaTables)
if err.number=- 2147467259   then goto next_file:
Но не хотелось бы завязываться на данный способ. Есть у кого какие-нибудь соображения, как можно определить наличие пароля на файл Excel не открывая его?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как определить, есть ли пароль не книге (excel) не открывая ее?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]