我需要从已从Intranet站点生成和新打开的文件(' 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"
以下是我运行代码时会发生什么:
如果我不使用' Resume Next'
,我尝试为NameOfNewFile分配值的行会返回错误我尝试了几种方法来解决这个问题:
在下载文件之前以及在尝试关闭受保护的视图之前立即运行此行,但行为仍然相同。
Application.AutomationSecurity = msoAutomationSecurityForceDisable
将文件夹(存储下载文件的位置)放入受信任位置,但我的用户设置不允许这样做。
取消选中"为来自互联网的文件启用受保护的视图"信任中心的框,但未选中此框,我甚至无法打开该文件。
插入此代码(但"设置wbPV行"导致运行时错误' 424':需要对象):
Dim wbPV As Workbook
If Application.ProtectedViewWindows.Count > 0 Then
Set wbPV = ActiveProtectedViewWindow.Edit
End If
这需要经常对多个文件进行,因此在VBA中解决它会很有用。有人可以帮我找到一种方法来以编程方式为这种类型的下载文件关闭受保护的视图吗?或者是否有其他方法可以从文件中获取数据?
答案 0 :(得分: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