Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 07:22   #1
Amelie_L
 
Регистрация: 20.01.2010
Сообщений: 9
Восклицание Перенос файла из одной папки в другую

У меня есть программа, она формирует файлы и сохраняет их в опред папке, файлы формируются каждый день. Как можно написать макрос (или дописать мой) который бы проверял дату создания файлов в этой папке и если с момента создания прошла например неделя, то переносил их в другую папку (что то типо архива)?
Amelie_L вне форума Ответить с цитированием
Старый 29.01.2010, 11:42   #2
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Вот код:
Код:
Sub movingFiles()
Dim filePath As String, arhPath As String, fileName As String, crDate As Variant
Dim objFSO As Object: Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFL
      
filePath = ThisWorkbook.path & "\"
arhPath = ThisWorkbook.path & "\Архив\"
     
fileName = Dir(filePath & "*.xls") 'проверять будем файлы Эксель. Можно изменить расширение
    Do While fileName <> ""
        Set objFL = objFSO.GetFile(filePath & fileName)
        crDate = objFL.DateCreated
            timeToMove = crDate + 7 'прибавляем 7 дней к дате создания
            If Now > timeToMove Then objFSO.MoveFile filePath & fileName, arhPath & fileName
    fileName = Dir
    Loop

    
Set objFSO = Nothing

MsgBox "Готово!"
End Sub
Файлы, которые надо перенести, должны лежать в той же папке, что и Ваш файл. В этой папке создайте папку "Архив", туда и будут закидываться файлы через неделю после их создания.
Код можно поместить в модуль и запускать по необходимости, а можно поместить в модуль ЭтаКнига и запускать при собитии открыттия книги

Sub Workbook_Open()

Последний раз редактировалось Maxx; 29.01.2010 в 11:47.
Maxx вне форума Ответить с цитированием
Старый 29.01.2010, 14:17   #3
Amelie_L
 
Регистрация: 20.01.2010
Сообщений: 9
По умолчанию

Дело в том что если этот файл будет лежать там же где и мои, то программа при запуске, через неделю тоже отправляет его в архив)Может можно как то место прописать?
Amelie_L вне форума Ответить с цитированием
Старый 29.01.2010, 14:57   #4
istoe
Пользователь
 
Регистрация: 12.07.2009
Сообщений: 17
По умолчанию

в коде выше:

Код:
    Do While fileName <> ""
        If fileName <> ThisWorkbook.Name Then
            Set objFL = objFSO.GetFile(filePath & fileName)
            crDate = objFL.DateCreated
                timeToMove = crDate + 7 'прибавляем 7 дней к дате создания
                If Now > timeToMove Then objFSO.MoveFile filePath & fileName, arhPath & fileName
        End If
        fileName = Dir
    Loop
istoe вне форума Ответить с цитированием
Старый 29.01.2010, 15:29   #5
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Цитата:
If fileName <> ThisWorkbook.Name Then
Все правильно! Писал быстро, не обратил внимания.
Но в любом случае вылезла бы ошибка, так как открытый файл не переместился бы.
Maxx вне форума Ответить с цитированием
Старый 29.01.2010, 15:34   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Перемещать файл можно и без использования CreateObject("Scripting.FileSystemO bject").

Достаточно будет встроенных средств VBA:

Код:
Sub test()
    СтарыйПутьКФайлу = "C:\Documents and Settings\Рабочий стол\Clip_3.jpg"
    НовыйПутьКФайлу = "D:\картинки\Новое Имя.jpg"
    Name СтарыйПутьКФайлу As НовыйПутьКФайлу
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 29.01.2010, 16:28   #7
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Перемещать файл можно и без использования CreateObject("Scripting.FileSystemO bject").

Достаточно будет встроенных средств VBA:

Код:
Sub test()
    СтарыйПутьКФайлу = "C:\Documents and Settings\Рабочий стол\Clip_3.jpg"
    НовыйПутьКФайлу = "D:\картинки\Новое Имя.jpg"
    Name СтарыйПутьКФайлу As НовыйПутьКФайлу
End Sub
Увы, но на моем уровне такой способ - это что-то из рода фантастики

Сорри за флуд!
Maxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос настроек с одной Дельфы в другую. Alex Cones Общие вопросы Delphi 4 01.01.2010 14:35
перенос столбцов из одной закладки в другую wildvad Microsoft Office Excel 19 22.05.2009 11:35
скопировать все содержимое папки в другую DannyKing Помощь студентам 6 27.03.2009 09:50
Передача данных из одной таблицы в другую, при выборе одной ячейки MickMick Microsoft Office Excel 6 06.10.2008 13:57
Перенос данных из одной книги со многих листов в другую gavrylyuk Microsoft Office Excel 34 20.07.2008 21:39