Информация для интересующихся подобным.
В итоге у меня работает следующий макрос:
Код |
---|
' Purpose : http://www.excel-vba.ru/chto-umeet-excel/prosmotret-vse-fajly-v-papke/
'---------------------------------------------------------------------------------------
Option Explicit
Dim objFSO As Object, objFolder As Object, objFile As Object
Sub Get_All_File_from_SubFolders()
Dim sFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
sFolder = .SelectedItems(1)
End With
sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
Application.ScreenUpdating = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
GetSubFolders sFolder
Set objFolder = Nothing
Set objFSO = Nothing
Application.ScreenUpdating = True
End Sub
Private Sub GetSubFolders(sPath)
Dim sPathSeparator As String, sObjName As String
Dim wb As Workbook
Set objFolder = objFSO.GetFolder(sPath)
For Each objFile In objFolder.Files
If Replace(objFile.Name, objFSO.GetBaseName(objFile), "") Like ".xls*" Then
'открываем книгу
Set wb = Application.Workbooks.Open(sPath & objFile.Name)
'действия с файлом
'Запишем на первый лист книги в ячейку А1 - текущая дата
wb.Sheets(1).Range("A1").Value = Format(Now, "dd.mm.yyyy")
'Меняем цвет ячеек A4:D8
Range("A4:D8").Interior.Color = RGB(100, 150, 250)
'Ставим пароль на текущий лист каждого файла 123
wb.Sheets(1).Protect "123"
wb.Close True
End If
Next
For Each objFolder In objFolder.SubFolders
GetSubFolders objFolder.Path & Application.PathSeparator
Next
End Sub |
Я запускаю его из специально созданного файла (который находится в любой другой папке), макрос спрашивает путь к папке, в которой лежат изменяемые файлы, потом в каждый файл добавляет в ячейку A1 текущую дату, закрашивает диапазон ячеек A4:D8 и ставит пароль на лист 123.
А как бы сделать отдельный макрос, который предварительно со всех этих файлов в файл с макросом вытащил бы текущее значение ячеек А1 и название соответствующего файла в столбик?
Например, есть таблицы:
файл1 (в ячейке А1 стоит дата 01.01.2021)
файл2 (в ячейке А1 стоит дата 01.05.2021)файл3 (в ячейке А1 стоит дата 01.06.2021)
Файл с макросом. При запуске макроса в этой таблице заполняются данные:
А1 - 01.01.2021 В1 - файл1
А2 - 01.05.2021 В2 - файл2
А3 - 01.06.2021 В3 - файл3
Подскажите, пожалуйста решение?
Рекордером не получилось изобразить, так как он пишет действия с конкретными файлами, а не со всеми файлами из указанной папки.