Перемещение файлов по папкам - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день товарищи! есть код макроса, которым я пользуюсь для перемещения определенных файлов xlsx по заданным папкам. но его громоздкость и не универсальность в том, что для каждого файла написана процедура перемещения, и имена соответственно фиксированы. а можно ли подкорректировать код так, чтобы выполнялось перемещения файла в папку в зависимости от содержания имени файла: т.е. если в имени файла содержится слово

one

, переместил его в папку

One

, нашел слово

three

перенес его в папку

Three

и тд. всего папок 3 и ключевых слов соответственно тоже 3
Листинг программы
  1. Sub FileToFolder()
  2. MkDir ("C:\One") 'создаем 3 директории
  3. MkDir ("C:\Two")
  4. MkDir ("C:\Three")
  5.  
  6. sFileName = "C:\Users\papi\Desktop\Temp\one1.xlsx" 'путь к файлу
  7. sNewFileName = "C:\One\one1.xlsx" 'имя файла для перемещения
  8. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  9. Name sFileName As sNewFileName 'перемещаем файл
  10. sFileName = "C:\Users\papi\Desktop\Temp\one2.xlsx"
  11. sNewFileName = "C:\One\one2.xlsx"
  12. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  13. Name sFileName As sNewFileName
  14. sFileName = "C:\Users\papi\Desktop\Temp\two1.xlsx"
  15. sNewFileName = "C:\Two\two1.xlsx"
  16. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  17. Name sFileName As sNewFileName
  18. sFileName = "C:\Users\papi\Desktop\Temp\two2.xlsx"
  19. sNewFileName = "C:\Two\two2.xlsx"
  20. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  21. Name sFileName As sNewFileName
  22. sFileName = "C:\Users\papi\Desktop\Temp\two3.xlsx"
  23. sNewFileName = "C:\Two\two3.xlsx"
  24. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  25. Name sFileName As sNewFileName
  26. sFileName = "C:\Users\papi\Desktop\Temp\three1.xlsx"
  27. sNewFileName = "C:\Three\three1.xlsx"
  28. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  29. Name sFileName As sNewFileName
  30. sFileName = "C:\Users\papi\Desktop\Temp\three2.xlsx"
  31. sNewFileName = "C:\Three\three2.xlsx"
  32. If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
  33. Name sFileName As sNewFileName
  34. End Sub
с уважением

Решение задачи: «Перемещение файлов по папкам»

textual
Листинг программы
  1. Dim names() as String
  2. names = Array("one","two","three")
  3. fn= dir("C:\Users\papi\Desktop\Temp\*.xlsx")
  4. while fn<>""
  5.   For i=0 to Ubound(names)
  6.     if fn like "*" & names(i) & "*.xlsx" then
  7.       Name "C:\Users\papi\Desktop\Temp\" & fn As "C:\" & names(i) & "\" & fn
  8.     end if
  9.   next i
  10.   fn=dir
  11. wend

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут