Отключить защищенный просмотр в Excel VBA
Мне нужно извлечь данные из файла ('DatabaseExport.xlsx'), который был сгенерирован и вновь открыт с сайта интрасети. Файл открывается в режиме защищенного просмотра (желтый баннер в верхней части экрана). Я думаю, что необходимо отключить защищенное представление, чтобы я мог извлечь данные из файла. Мой VBA содержится в отдельном файле 'GetAndAnalyseData.xlsm':
NameOfNewFile = "ooo"
Do
On Error Resume Next
Application.ActiveProtectedViewWindow.Edit 'This never works first time
NameOfNewFile = Left(ActiveWorkbook.Name, 14)
On Error GoTo 0
If NameOfNewFile = "ooo" Then
ttt = MsgBox("this should not be possible!", vbOKCancel)
If ttt = vbCancel Then Stop
End If
Loop While NameOfNewFile = "ooo"
И вот что происходит, когда я запускаю код:
- Я получаю сообщение о том, что "это не должно быть возможно!"
- Если я нажимаю ОК, я получаю одно и то же сообщение, и файл остается в режиме защищенного просмотра.
- Если я нажимаю Отмена, а затем F5 (чтобы продолжить выполнение), цикл работает как надо (защищенное представление отменяется, значение TEMP устанавливается на имя файла, цикл завершается, и макрос продолжается.
Строка, в которой я пытаюсь присвоить значение для NameOfNewFile, возвращает ошибку, если я не использую "Resume Next":
- Ошибка времени выполнения '91': переменная объекта или переменная блока не установлены
Я пробовал несколько способов исправить это:
Запуск этой строки перед загрузкой файла, а также непосредственно перед попыткой отключить защищенный просмотр, но поведение остается тем же.
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Превращение папки (в которой хранится загруженный файл) в надежное место, но это не разрешено моими пользовательскими настройками.
Снимите флажок "Включить защищенное представление для файлов, исходящих из Интернета" в центре управления безопасностью, но если этот флажок не установлен, я даже не могу открыть файл.
Вставка этого кода (но "Set wbPV line" вызывает ошибку во время выполнения "424": требуется объект):
Dim wbPV As Workbook If Application.ProtectedViewWindows.Count > 0 Then Set wbPV = ActiveProtectedViewWindow.Edit End If
Это должно быть сделано для нескольких файлов, довольно часто, и поэтому было бы полезно решить это в VBA. Может кто-нибудь помочь мне найти способ программно отключить защищенный просмотр для этого типа загружаемого файла? Или есть какой-то другой способ получить данные из файла?
0 ответов
Вариант явный
Sub Auto_edit_Workbooks()
Dim wb As Workbook
Dim wbPV As ProtectedViewWindow
If Application.ProtectedViewWindows.Count > 0 Then
For Each wbPV In Application.ProtectedViewWindows
wbPV.Activate
Set wb = wbPV.Edit()
Next wbPV
Else
End If
Set wb = Nothing
End Sub