【问题标题】:Using VBA to open Password Protected Files使用 VBA 打开受密码保护的文件
【发布时间】:2024-01-11 09:17:01
【问题描述】:

您好,对 VBA 和编码非常陌生,因此非常感谢所有帮助。

所以我有大约 37 个文件需要用 VBA 打开,然后获取一些数据并将其汇总到一个摘要中,但是谢天谢地,有些文件使用相同的密码进行了密码保护。

我正在使用 Application.Get Open 文件名来获取所有文件的位置,然后使用从 1 到 n 的循环来打开 FileNames(i) 在打开工作簿并询问时我该怎么做对于它输入密码“password1”的密码。

我尝试过ActiveWorkbook.Unprotect Password:="Password",但似乎不起作用,因为需要先打开工作簿才能取消保护。

Sub Aggregation_Data()
Dim FileNames As Variant, i As Integer, j As Integer
Dim TWB As Workbook, aWB As Workbook



Set TWB = ThisWorkbook

MsgBox ("Enter Files that you wish to import data from")

FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter (*.xlsx), *xlsx", Title:="Open File(s)", MultiSelect:=True)

For i = 1 To UBound(FileNames)

Workbooks.Open FileNames(i)
ActiveWorkbook.Unprotect Password:="Password"


Next i

End Sub

enter image description here

【问题讨论】:

标签: excel vba


【解决方案1】:

在你的 For 循环中,尝试:

Workbooks.Open (FileNames(i), Password:="Password")

【讨论】:

    【解决方案2】:

    .Protect.Unprotect是指避免用户修改脚本的功能。工作簿密码可以使用上面提到的Workbook.open参数。

    【讨论】:

    • 您好,我已经尝试过了,但得到一个编译错误“预期 =”
    【解决方案3】:

    所以我找到了可以分享的答案,结果证明逗号在正确的位置。

    设置 TWB = ThisWorkbook Application.ScreenUpdating = False FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter (*.xlsx), *xlsx", Title:="Open File(s)", MultiSelect:=True)

    For i = 1 To UBound(FileNames) Workbooks.Open FileNames(i), Password:="Password" 接下来我

    【讨论】:

      最近更新 更多