Доброго времени суток. Я полный чайник в макросах(столкнулся впервые, очень полезная вещь, буду учиться), проблема вот в чем: есть папка с экселевскими файлами, нужно во всех файлах простовить в одной и тойже ячейке (адрес не меняется, форма документа одинаковая) дату. Я знаю что первый документ был создан 1.09.2013, последний 15.11.2013, можно ли сделать это макросом?
Заранее спасибо за помощь.
Доброго времени суток. Я полный чайник в макросах(столкнулся впервые, очень полезная вещь, буду учиться), проблема вот в чем: есть папка с экселевскими файлами, нужно во всех файлах простовить в одной и тойже ячейке (адрес не меняется, форма документа одинаковая) дату. Я знаю что первый документ был создан 1.09.2013, последний 15.11.2013, можно ли сделать это макросом?
Sub dt() Dim fl Set FSO = CreateObject("Scripting.FileSystemObject") For Each fl in FSO.GetFolder("C:\temp\svod\").Files 'Открытие файла и проставление даты. Тут либо циклом по листам, либо только первый? Next End Sub
[/vba]
А вообще уточните некоторые вещи: Дата = дата создания файла? В какую ячейку и на каком листе нужно проставить?
Для начала вот это [vba]
Код
Sub dt() Dim fl Set FSO = CreateObject("Scripting.FileSystemObject") For Each fl in FSO.GetFolder("C:\temp\svod\").Files 'Открытие файла и проставление даты. Тут либо циклом по листам, либо только первый? Next End Sub
[/vba]
А вообще уточните некоторые вещи: Дата = дата создания файла? В какую ячейку и на каком листе нужно проставить?SkyPro
skypro1111@gmail.com
Сообщение отредактировал SkyPro - Суббота, 16.11.2013, 18:41
Sub InsertDate() Dim wb As Workbook Dim x As String Dim pthname As String Dim ch_dir As String Dim cl As String
ch_dir = "D:\$\" 'подставьте свой путь x = "*.xls?" 'и свою маску cl = "C3" 'и ячейку, в которую занести дату Application.ScreenUpdating = False pthname = ch_dir & x nf = nmfile nmfile = Dir(ch_dir & x) Do While nmfile <> "" If ch_dir + nmfile = ThisWorkbook.FullName Then Range(cl).Value = CDate("16.11.2013") Else Set wb = Workbooks.Open(ch_dir + nmfile) Range(cl).Value = CDate("16.11.2013") wb.Close 0 End If nmfile = Dir() Loop Application.ScreenUpdating = True End Sub
[/vba]
[vba]
Код
Sub InsertDate() Dim wb As Workbook Dim x As String Dim pthname As String Dim ch_dir As String Dim cl As String
ch_dir = "D:\$\" 'подставьте свой путь x = "*.xls?" 'и свою маску cl = "C3" 'и ячейку, в которую занести дату Application.ScreenUpdating = False pthname = ch_dir & x nf = nmfile nmfile = Dir(ch_dir & x) Do While nmfile <> "" If ch_dir + nmfile = ThisWorkbook.FullName Then Range(cl).Value = CDate("16.11.2013") Else Set wb = Workbooks.Open(ch_dir + nmfile) Range(cl).Value = CDate("16.11.2013") wb.Close 0 End If nmfile = Dir() Loop Application.ScreenUpdating = True End Sub
А вообще уточните некоторые вещи: Дата = дата создания файла? В какую ячейку и на каком листе нужно проставить?
дата, к сожалению не совпадает с датой создания. вот файл с примером, после слов дата теста, адрес ячейки K5, должна идти дата в формате ДД.ММ.ГГГГtr1gun
Так а откуда брать эту дату? Или там должна одна и та же быть?
Вот макрос, который тупо проставит даты начиная с 01.09.2013 по 01.09.2013+кол-во файлов. Без всякого разбора кто и когда. [vba]
Код
Sub dt() Application.DisplayAlerts = False Dim fl Dim directory$: directory = "C:\" Dim dt As Date: dt = "01.09.2013" Set FSO = CreateObject("Scripting.FileSystemObject") For Each fl In FSO.GetFolder(directory).Files If fl.Name Like "*.xls*" Then Set wb = Workbooks.Open(fl) wb.Sheets(1).[k5].Value = dt wb.Close True dt = dt + 1 End If Next Application.DisplayAlerts = True End Sub
[/vba]
Так а откуда брать эту дату? Или там должна одна и та же быть?
Вот макрос, который тупо проставит даты начиная с 01.09.2013 по 01.09.2013+кол-во файлов. Без всякого разбора кто и когда. [vba]
Код
Sub dt() Application.DisplayAlerts = False Dim fl Dim directory$: directory = "C:\" Dim dt As Date: dt = "01.09.2013" Set FSO = CreateObject("Scripting.FileSystemObject") For Each fl In FSO.GetFolder(directory).Files If fl.Name Like "*.xls*" Then Set wb = Workbooks.Open(fl) wb.Sheets(1).[k5].Value = dt wb.Close True dt = dt + 1 End If Next Application.DisplayAlerts = True End Sub
tr1gun, замените x = "*.xls?" на x = "*.xls*" SkyPro, если книга с вашим макросом также будет лежать в directory = "C:\", то что будет при повторном открытии ее же: Set wb = Workbooks.Open(fl) ? Если ошибку повторного открытия обойти, то wb.Close закроет книгу с макросом и тогда еще в не обработанные книги дата так и не вставится.
tr1gun, замените x = "*.xls?" на x = "*.xls*" SkyPro, если книга с вашим макросом также будет лежать в directory = "C:\", то что будет при повторном открытии ее же: Set wb = Workbooks.Open(fl) ? Если ошибку повторного открытия обойти, то wb.Close закроет книгу с макросом и тогда еще в не обработанные книги дата так и не вставится.SergeyKorotun