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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2016, 11:00   #1
AlexanderJin
 
Регистрация: 21.05.2014
Сообщений: 3
По умолчанию Копирование файлов по списку

Добрый день. Помогите, пожалуйста. Нашёл макрос, который копирует файлы по указанной директории, но для моей задачи не совсем подходит, т.к. у меня огромное количество файлов (>1000), которые нужно рассовать по разным директориям. Не могу прописать в макросе, что директории файлов нужно брать из столбца A, а директории для копирования этих файлов нужно брать из столбца B.
Макрос:
Код HTML:
Sub Copy_File()
    Dim objFSO As Object, objFile As Object
    Dim sFileName As String, sNewFileName As String
 
    sFileName = Range("a1")    'имя исходного файла
    sNewFileName = Range("b1")    'имя файла в конечной директории
    If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
    
    'копируем файл
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(sFileName)
    objFile.Copy sNewFileName
 
    MsgBox "Файл скопирован", vbInformation, "ааа"
End Sub
Вложения
Тип файла: zip копирование2.zip (18.5 Кб, 29 просмотров)

Последний раз редактировалось AlexanderJin; 20.01.2016 в 11:11.
AlexanderJin вне форума Ответить с цитированием
Старый 20.01.2016, 12:30   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

при активном листе с данными выполните этот макрос
Код:
Sub CopyAasB()
  Dim r As Long, s As String
  For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Dir(Cells(r, 1)) <> "" Then
      If Dir(Cells(r, 2)) <> "" Then Kill Cells(r, 2)
      FileCopy Cells(r, 1), Cells(r, 2)
    Else
      s = s & Chr(10) & Cells(r, 1)
    End If
  Next
  If s <> "" Then MsgBox "Not Copied:" & s
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 20.01.2016, 13:23   #3
AlexanderJin
 
Регистрация: 21.05.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
при активном листе с данными выполните этот макрос
Код:
Sub CopyAasB()
  Dim r As Long, s As String
  For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Dir(Cells(r, 1)) <> "" Then
      If Dir(Cells(r, 2)) <> "" Then Kill Cells(r, 2)
      FileCopy Cells(r, 1), Cells(r, 2)
    Else
      s = s & Chr(10) & Cells(r, 1)
    End If
  Next
  If s <> "" Then MsgBox "Not Copied:" & s
End Sub
отлично, всё работает. спасибо!
AlexanderJin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт значений из внешних книг Excel по списку файлов Varen1k Microsoft Office Excel 14 14.08.2018 10:09
Копирование файлов Wishangel Работа с сетью в Delphi 3 08.09.2010 14:22
Удаление строк по списку файлов 550953 Microsoft Office Excel 7 01.09.2009 10:23
Копирование файлов matus Помощь студентам 9 27.02.2008 19:34
Копирование файлов Devil_uu Помощь студентам 2 24.03.2007 20:27