У меня есть цикл, который собирает данные из более 100 книг.У некоторых есть защита паролем для рабочих книг и рабочих листов.
Я думал, что добавил код для ввода пароля для каждой книги, и он работал до тех пор, пока я не изменил код для просмотра папки и ее подпапок, а не одной папки, но теперь все файлы спароли дают всплывающее окно для ввода пароля.
Я предполагаю, что не вписываю пароль в нужную точку.Я пытался переместить его перед «Для каждого OFile» и т. Д., Но я не уверен, как это сделать, прежде чем установить «wb» без ошибок.
Любая помощь будет принята с благодарностью!
Sub Test_Macro()
Dim wb As Workbook
Dim ws As Worksheet
Dim fso, oFolder, oSubfolder, OFile, queue As Collection
Set fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
queue.Add fso.GetFolder("D:\example\example")
'^^^ UPDATE THIS FILE PATH TO FOLDER WHERE THE RETURNED SCORECARDS ARE STORED.
Do While queue.Count > 0
Set oFolder = queue(1)
queue.Remove 1 'dequeue
For Each oSubfolder In oFolder.SubFolders
queue.Add oSubfolder
Next oSubfolder
For Each OFile In oFolder.Files
y = ThisWorkbook.Sheets("Consol").Cells(Rows.Count, 1).End(xlUp).Row + 1 '<<< Finda next available row containing a value in consol sheet
Set wb = Workbooks.Open(OFile.path) '<<< Sets variable to the open performance scorecard and unprotects
wb.Password = "Password" '<<<<This is one that doesn't appear to be working
Set ws = wb.Sheets("Detailed Summary") '<<< Defines sheet in the open scorecard to scrape from
ws.Unprotect Password:="Password"
wsLR = ws.Columns("B").Find("*", after:=ws.Cells(1, 2), SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row '<<< Defines the range containing data in the open scorecard
Dim scraped As Variant
With ws
scraped = .Range(.Cells(5, 2), .Cells(wsLR, 85))
End With
Dim consolRng As Range
Set consolRng = ThisWorkbook.Sheets("Consol").Cells(y, 1)
Set consolRng = consolRng.Resize(rowsize:=UBound(scraped, 1), columnsize:=UBound(scraped, 2))
consolRng = scraped
wb.Close (Saved = True)
Next OFile
Loop
End Sub
Любая помощь будет принята с благодарностью!