Копировать файлы Excel vba по списку
Обновлено: 20.11.2024
Мне нужно сопоставить и найти имена файлов из моего столбца A с файлами, расположенными в c:\copyform, и тот, который найден, скопируйте в папку c:\copyto, используя код VBA.
Вы можете помочь? Я получаю только частичные результаты.
Эта тема заблокирована. Вы можете подписаться на вопрос или проголосовать за него как полезный, но вы не можете отвечать в этой теме.
Сообщить о нарушении
Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.
Здравствуйте!
У меня есть список имен файлов, введенных в столбец A электронной таблицы Excel. Фактические файлы расположены в папке c:\copyfrom
Мне нужно сопоставить и найти имена файлов из моего столбца A с файлами, расположенными в c:\copyform, и тот, который найден, скопируйте в c: \copyto папку с помощью кода VBA.
Вы можете помочь? Я получаю только частичные результаты.
Спасибо
Предполагая, что имя первого файла находится в строке 2 первого листа рабочей книги, следующее должно делать то, что вы хотите:
Затемнить список файлов как вариант
Затемнить как долго
Затемнить filetocopy как строку
Затемнить источник копии как строку
copysource = "C:\copyfrom\"
filelist = ActiveWorkbook.Sheets(1).Range("A1").CurrentRegion.Value
For i = 2 To UBound(filelist)
fname = Dir$(copysource & "*.*")
>While fname <> ""
If UCase(fname) = UCase(filelist(i, 1)) Then
FileCopy copysource & fname, "C:\Copyto\" & fname
End Если
fname = Dir$()
Перейти
Далее
Сообщить о нарушении
Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.
В первый день моей работы в небольшой консалтинговой фирме мне на три дня поручили небольшой проект.
Работа была простой.
На сетевом диске было много папок, и в каждой папке были сотни файлов.
Мне нужно было выполнить следующие три шага:
- Выберите файл и скопируйте его имя.
- Вставьте это имя в ячейку Excel и нажмите Enter.
- Перейдите к следующему файлу и повторите шаги 1 и 2.
Звучит просто, правда?
Это было просто – просто и огромная трата времени.
То, что у меня заняло три дня, можно было бы сделать за несколько минут, если бы я знал правильные методы.
В этом уроке я покажу вам различные способы сделать весь этот процесс очень быстрым и очень простым (с VBA и без него).
Это руководство охватывает:
Ограничения методов, показанных в этом руководстве: с помощью методов, показанных ниже, вы сможете получить имена файлов только в основной папке. Вы не получите имена файлов в подпапках в основной папке. Вот способ получить имена файлов из папок и подпапок с помощью Power Query
Использование функции FILES для получения списка имен файлов из папки
Слышали о функции FILES раньше?
Не волнуйтесь, если вы этого не сделали.
Это из детства электронных таблиц Excel (формула версии 4).
Хотя эта формула не работает в ячейках рабочего листа, она по-прежнему работает в именованных диапазонах. Мы будем использовать этот факт, чтобы получить список имен файлов из указанной папки.
Теперь предположим, что у вас есть папка с названием «Тестовая папка» на рабочем столе, и вы хотите получить список имен файлов для всех файлов в этой папке.
Вот шаги, которые дадут вам имена файлов из этой папки:
-
В ячейке A1 введите полный адрес папки, за которым следует знак звездочки (*).
Например, если ваша папка на диске C, то адрес будет выглядеть как
C:\Users\Sumit\Desktop\Test Folder\* В папке, из которой вы хотите получить имена файлов, либо создайте новую книгу Excel, либо откройте существующую книгу в папке и используйте приведенную ниже формулу в любой ячейке. Эта формула даст вам адрес папки и добавит в конце знак звездочки (*). Теперь вы можете скопировать и вставить (вставить как значение) этот адрес в любую ячейку (A1 в этом примере) в книге, в которой вы хотите имена файлов.
[Если вы создали новую книгу в папке, чтобы использовать приведенную выше формулу и получить адрес папки, вы можете удалить ее, чтобы она не отображалась в списке файлов в этой папке]
Хотите извлечь файлы с определенным расширением??
Если вы хотите получить все файлы с определенным расширением, просто измените звездочку на это расширение файла. Например, если вам нужны только файлы Excel, вы можете использовать *xls* вместо *
Таким образом, адрес папки, который вам нужно использовать, будет C:\Users\Sumit\Desktop\Test Folder\*xls*
Точно так же для файлов документов Word используйте *doc*
Как это работает?
Формула FILES извлекает имена всех файлов указанного расширения в указанной папке.
В формуле ИНДЕКС мы задали имена файлов в виде массива и возвращаем 1-е, 2-е, 3-е имена файлов и т. д. с помощью функции СТРОКА.
Обратите внимание, что я использовал ROW()-2, так как мы начали с третьей строки и далее. Таким образом, ROW()-2 будет равно 1 для первого экземпляра, 2 для второго экземпляра, если номер строки равен 4, и т. д. и т. д.
Посмотреть видео – получить список имен файлов из папки в Excel
<Р>