尝试打开多个受密码保护的excel工作簿。我有一个具有宏的主wb。它有一个标记为“仪表板”的工作表。在此工作表中,所有文件的文件目录在顶部列出。目录下面有两列。左列列出了文件名,其旁边的一列列出了每个文件的密码。我正在尝试创建一个将打开所有文件的循环。我需要它来刷新其中包含的数据。任何帮助将不胜感激!
尝试了多种Do while循环安排,但都产生了错误。
Dim mainwb As Workbook
Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim pw As String
Dim myExtension As String
Set mainwb = ThisWorkbook
myPath = ActiveSheet.Range("C1")
myExtension = ".xlsx"
myFile = ActiveCell
pw = ActiveCell.Offset(0, 1)
'Optimize Macro Speed
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
ThisWorkbook.Sheets("Dashboard").Range("A4").Select
Do While myFile <> ""
Set wb = Workbooks.Open(Filename:=myPath & myFile & myExtension, Password:=pw)
ThisWorkbook.Worksheets("Dashboard").Activate
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
答案 0 :(得分:0)
这将打开“仪表板”工作表中列出的所有文件(我假设您有5个文件,请更改循环以匹配您的文件):
myPath = mainwb.Sheets("Dashboard").Range("C1")
myExtension = ".xlsx"
For i = 4 to 8
myFile = ThisWorkbook.Sheets("Dashboard").Range("A" & i).Value
pw = ThisWorkbook.Sheets("Dashboard").Range("B" & i).Value
Workbooks.Open Filename:=myPath & myFile & myExtension, Password:=pw
next i
您可能还想在结束子任务之前重置屏幕更新,事件和计算:
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic