Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проставление даты в документах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проставление даты в документах (Макросы Sub)
Проставление даты в документах
tr1gun Дата: Суббота, 16.11.2013, 14:54 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Доброго времени суток. Я полный чайник в макросах(столкнулся впервые, очень полезная вещь, буду учиться), проблема вот в чем: есть папка с экселевскими файлами, нужно во всех файлах простовить в одной и тойже ячейке (адрес не меняется, форма документа одинаковая) дату. Я знаю что первый документ был создан 1.09.2013, последний 15.11.2013, можно ли сделать это макросом?

Заранее спасибо за помощь.
 
Ответить
СообщениеДоброго времени суток. Я полный чайник в макросах(столкнулся впервые, очень полезная вещь, буду учиться), проблема вот в чем: есть папка с экселевскими файлами, нужно во всех файлах простовить в одной и тойже ячейке (адрес не меняется, форма документа одинаковая) дату. Я знаю что первый документ был создан 1.09.2013, последний 15.11.2013, можно ли сделать это макросом?

Заранее спасибо за помощь.

Автор - tr1gun
Дата добавления - 16.11.2013 в 14:54
SergeyKorotun Дата: Суббота, 16.11.2013, 18:18 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
файл с примером прикрепите.
 
Ответить
Сообщениефайл с примером прикрепите.

Автор - SergeyKorotun
Дата добавления - 16.11.2013 в 18:18
SkyPro Дата: Суббота, 16.11.2013, 18:29 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Для начала вот это :)
[vba]
Код
Sub dt()
Dim fl
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each fl in FSO.GetFolder("C:\temp\svod\").Files
'Открытие файла и проставление даты. Тут либо циклом по листам, либо только первый?
Next
End Sub
[/vba]

А вообще уточните некоторые вещи:
Дата = дата создания файла?
В какую ячейку и на каком листе нужно проставить?


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Суббота, 16.11.2013, 18:41
 
Ответить
СообщениеДля начала вот это :)
[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
Дата добавления - 16.11.2013 в 18:29
SergeyKorotun Дата: Суббота, 16.11.2013, 19:51 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
[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
[/vba]


Сообщение отредактировал SergeyKorotun - Суббота, 16.11.2013, 19:53
 
Ответить
Сообщение[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
[/vba]

Автор - SergeyKorotun
Дата добавления - 16.11.2013 в 19:51
tr1gun Дата: Суббота, 16.11.2013, 21:30 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
А вообще уточните некоторые вещи:
Дата = дата создания файла?
В какую ячейку и на каком листе нужно проставить?

дата, к сожалению не совпадает с датой создания.
вот файл с примером, после слов дата теста, адрес ячейки K5, должна идти дата в формате ДД.ММ.ГГГГ
К сообщению приложен файл: 6291257.xls (54.5 Kb)
 
Ответить
Сообщение
А вообще уточните некоторые вещи:
Дата = дата создания файла?
В какую ячейку и на каком листе нужно проставить?

дата, к сожалению не совпадает с датой создания.
вот файл с примером, после слов дата теста, адрес ячейки K5, должна идти дата в формате ДД.ММ.ГГГГ

Автор - tr1gun
Дата добавления - 16.11.2013 в 21:30
tr1gun Дата: Суббота, 16.11.2013, 21:30 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Sub InsertDate()

спасибо, попробую
 
Ответить
Сообщение
Sub InsertDate()

спасибо, попробую

Автор - tr1gun
Дата добавления - 16.11.2013 в 21:30
SkyPro Дата: Суббота, 16.11.2013, 22:12 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Так а откуда брать эту дату? Или там должна одна и та же быть?

Вот макрос, который тупо проставит даты начиная с 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]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Суббота, 16.11.2013, 22:31
 
Ответить
СообщениеТак а откуда брать эту дату? Или там должна одна и та же быть?

Вот макрос, который тупо проставит даты начиная с 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]

Автор - SkyPro
Дата добавления - 16.11.2013 в 22:12
SergeyKorotun Дата: Суббота, 16.11.2013, 22:45 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
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
Дата добавления - 16.11.2013 в 22:45
SkyPro Дата: Суббота, 16.11.2013, 23:43 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
SergeyKorotun, как то не подумал. Исправимо:[vba]
Код
If fl.Name Like "*.xls*"  and thisworkbook.name <> fl.name Then
[/vba]
Но в любом случае макрос бесполезен, пока не поймем, откуда даты брать.


skypro1111@gmail.com
 
Ответить
СообщениеSergeyKorotun, как то не подумал. Исправимо:[vba]
Код
If fl.Name Like "*.xls*"  and thisworkbook.name <> fl.name Then
[/vba]
Но в любом случае макрос бесполезен, пока не поймем, откуда даты брать.

Автор - SkyPro
Дата добавления - 16.11.2013 в 23:43
tr1gun Дата: Воскресенье, 17.11.2013, 00:11 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
даты просто в порядке от x до y. В данном случае от 1.9 до 15.11. Можно отдельно сделать файл с датами, если так будет проще.
 
Ответить
Сообщениедаты просто в порядке от x до y. В данном случае от 1.9 до 15.11. Можно отдельно сделать файл с датами, если так будет проще.

Автор - tr1gun
Дата добавления - 17.11.2013 в 00:11
tr1gun Дата: Воскресенье, 17.11.2013, 00:14 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Еще вопрос немного не в тему, посоветуйте пожалуйста самоучитель по данной теме.
 
Ответить
СообщениеЕще вопрос немного не в тему, посоветуйте пожалуйста самоучитель по данной теме.

Автор - tr1gun
Дата добавления - 17.11.2013 в 00:14
tr1gun Дата: Воскресенье, 17.11.2013, 00:22 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Вот макрос, который тупо проставит даты начиная с 01.09.2013 по 01.09.2013+кол-во файлов. Без всякого разбора кто и когда.

спасибо, вообщем-то это и требовалось =)
 
Ответить
Сообщение
Вот макрос, который тупо проставит даты начиная с 01.09.2013 по 01.09.2013+кол-во файлов. Без всякого разбора кто и когда.

спасибо, вообщем-то это и требовалось =)

Автор - tr1gun
Дата добавления - 17.11.2013 в 00:22
SergeyKorotun Дата: Воскресенье, 17.11.2013, 00:54 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
посоветуйте пожалуйста самоучитель по данной теме
библиотека
 
Ответить
Сообщение
посоветуйте пожалуйста самоучитель по данной теме
библиотека

Автор - SergeyKorotun
Дата добавления - 17.11.2013 в 00:54
SkyPro Дата: Воскресенье, 17.11.2013, 01:08 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Не забудьте вот это:[vba]
Код
If fl.Name Like "*.xls*" Then
[/vba]Поменять на это:[vba]
Код
If fl.Name Like "*.xls*" and thisworkbook.name <> fl.name Then
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Воскресенье, 17.11.2013, 01:08
 
Ответить
СообщениеНе забудьте вот это:[vba]
Код
If fl.Name Like "*.xls*" Then
[/vba]Поменять на это:[vba]
Код
If fl.Name Like "*.xls*" and thisworkbook.name <> fl.name Then
[/vba]

Автор - SkyPro
Дата добавления - 17.11.2013 в 01:08
SergeyKorotun Дата: Воскресенье, 17.11.2013, 02:12 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
SkyPro, если макрос вставить в одну из книг, в которую надо вставить дату, то она останется без даты.
 
Ответить
СообщениеSkyPro, если макрос вставить в одну из книг, в которую надо вставить дату, то она останется без даты.

Автор - SergeyKorotun
Дата добавления - 17.11.2013 в 02:12
SkyPro Дата: Воскресенье, 17.11.2013, 20:10 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Это проблема?


skypro1111@gmail.com
 
Ответить
СообщениеЭто проблема?

Автор - SkyPro
Дата добавления - 17.11.2013 в 20:10
RAN Дата: Воскресенье, 17.11.2013, 20:34 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А если макрос никуда не вставить, он тоже работать не будет! :D
А если его запустить и Ворда, а если этих файлов и в помине нет, а если... :p


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА если макрос никуда не вставить, он тоже работать не будет! :D
А если его запустить и Ворда, а если этих файлов и в помине нет, а если... :p

Автор - RAN
Дата добавления - 17.11.2013 в 20:34
SkyPro Дата: Воскресенье, 17.11.2013, 23:28 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
А если файл с макросом будет называться точно так же, как и файл из папки, то будет еще одна проблема..
Если ТС не жалуется, то и проблемы нет.

ЗЫ: Вам же никто не запрещает добавить еще несколько уровней проверки (на тот же файл, на разные директории и названия файла и т.п.).


skypro1111@gmail.com
 
Ответить
СообщениеА если файл с макросом будет называться точно так же, как и файл из папки, то будет еще одна проблема..
Если ТС не жалуется, то и проблемы нет.

ЗЫ: Вам же никто не запрещает добавить еще несколько уровней проверки (на тот же файл, на разные директории и названия файла и т.п.).

Автор - SkyPro
Дата добавления - 17.11.2013 в 23:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проставление даты в документах (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!