Содержание
- Excel как скопировать файлы по списку
- Как быстро создать список файлов из папки и перенести в таблицу «Excel».
- Самый простой способ создания списка файлов, расположенных в папке.
- Перенос списка в программу Excel.
- Добавить комментарий Отменить ответ
- Excel как скопировать файлы по списку
Excel как скопировать файлы по списку
Здравствуйте.
Помогите сделать программу в VBA,которая будет искать файлы по таблице(файлы будут в папке до 3 уровня,лучше в корне диска D),а вставлять их нужно будет в новую папку которая будет создана или на рабочем столеили в той же директории.
Но есть несколько хитростей у этой задаче.(Поэтому в папке будет табличка с пробным задание[табл.V1],и 2 примера ее решения[Примеры результатов],а так же файлы по которым будет идти поиск[Layout] и там 3 подпапки[Blue];[White];[Yellow],а в них,в свою очередь есть еще подпапки от [98] до [164] с опред.интервалом). Сами файлы-изображение формата .tiff
СУТЬ В Том,что файлы в папки [Layout] неизменны,а по табличке [табл.V1] которая будет постоянно меняться,нужно будет создавать каждый раз новую папку с тем набором файлов,который указан в этой табл.
Будет постоянно происходить копирование файлов с одинаковым именем,можно просто подписывать датавремякопия1’копия2 или как вам будет легче,но в идеале чтобы файл имел имя=[свое имя+путь откуда он взялся],если их будет несколько,тогда имя=[свое имя+путь откуда он взялся]1;2;3и тд,но это по возможности.
если что то нетак,давай те я со своей стороны изменю,например конечные имена файлов и т.д.
А делать это нужно так,если напр. стоит цифра 1 напротив цвета White в табл. размера 110,тогда нужно сделать один белый комплект 110 размера,а это по одному файлу:1,2,3,4,5(т.е. эти 5 файлов образуют комплект)
НО очень важно,если таких комплектов нужно 2 и больше,тогда вместо файлов 3,4,5 нужно использовать 33,44,55(по сути это теже файлы,только спаринные),т.е. чтобы не кидать 2 файлы [3] нужно закинуть один файл [33]. Это делается для файлов 3,4,5, файлы 1 и 2 незаменяемые.
Т.е. если нужно закинуть BLUE размера 98 -3 шт.,тогда нужно закинуть из папки [LayoutBlue98] по 3 файлы [1],[2] и еще по одному [33,44,55] и еще [3,4,5].
Думаю, если посмотрите на пример,станет легче)
Здравствуйте.
Помогите сделать программу в VBA,которая будет искать файлы по таблице(файлы будут в папке до 3 уровня,лучше в корне диска D),а вставлять их нужно будет в новую папку которая будет создана или на рабочем столеили в той же директории.
Но есть несколько хитростей у этой задаче.(Поэтому в папке будет табличка с пробным задание[табл.V1],и 2 примера ее решения[Примеры результатов],а так же файлы по которым будет идти поиск[Layout] и там 3 подпапки[Blue];[White];[Yellow],а в них,в свою очередь есть еще подпапки от [98] до [164] с опред.интервалом). Сами файлы-изображение формата .tiff
СУТЬ В Том,что файлы в папки [Layout] неизменны,а по табличке [табл.V1] которая будет постоянно меняться,нужно будет создавать каждый раз новую папку с тем набором файлов,который указан в этой табл.
Будет постоянно происходить копирование файлов с одинаковым именем,можно просто подписывать датавремякопия1’копия2 или как вам будет легче,но в идеале чтобы файл имел имя=[свое имя+путь откуда он взялся],если их будет несколько,тогда имя=[свое имя+путь откуда он взялся]1;2;3и тд,но это по возможности.
если что то нетак,давай те я со своей стороны изменю,например конечные имена файлов и т.д.
А делать это нужно так,если напр. стоит цифра 1 напротив цвета White в табл. размера 110,тогда нужно сделать один белый комплект 110 размера,а это по одному файлу:1,2,3,4,5(т.е. эти 5 файлов образуют комплект)
НО очень важно,если таких комплектов нужно 2 и больше,тогда вместо файлов 3,4,5 нужно использовать 33,44,55(по сути это теже файлы,только спаринные),т.е. чтобы не кидать 2 файлы [3] нужно закинуть один файл [33]. Это делается для файлов 3,4,5, файлы 1 и 2 незаменяемые.
Т.е. если нужно закинуть BLUE размера 98 -3 шт.,тогда нужно закинуть из папки [LayoutBlue98] по 3 файлы [1],[2] и еще по одному [33,44,55] и еще [3,4,5].
Думаю, если посмотрите на пример,станет легче) олежа525
Сообщение Здравствуйте.
Помогите сделать программу в VBA,которая будет искать файлы по таблице(файлы будут в папке до 3 уровня,лучше в корне диска D),а вставлять их нужно будет в новую папку которая будет создана или на рабочем столеили в той же директории.
Но есть несколько хитростей у этой задаче.(Поэтому в папке будет табличка с пробным задание[табл.V1],и 2 примера ее решения[Примеры результатов],а так же файлы по которым будет идти поиск[Layout] и там 3 подпапки[Blue];[White];[Yellow],а в них,в свою очередь есть еще подпапки от [98] до [164] с опред.интервалом). Сами файлы-изображение формата .tiff
СУТЬ В Том,что файлы в папки [Layout] неизменны,а по табличке [табл.V1] которая будет постоянно меняться,нужно будет создавать каждый раз новую папку с тем набором файлов,который указан в этой табл.
Будет постоянно происходить копирование файлов с одинаковым именем,можно просто подписывать датавремякопия1’копия2 или как вам будет легче,но в идеале чтобы файл имел имя=[свое имя+путь откуда он взялся],если их будет несколько,тогда имя=[свое имя+путь откуда он взялся]1;2;3и тд,но это по возможности.
если что то нетак,давай те я со своей стороны изменю,например конечные имена файлов и т.д.
А делать это нужно так,если напр. стоит цифра 1 напротив цвета White в табл. размера 110,тогда нужно сделать один белый комплект 110 размера,а это по одному файлу:1,2,3,4,5(т.е. эти 5 файлов образуют комплект)
НО очень важно,если таких комплектов нужно 2 и больше,тогда вместо файлов 3,4,5 нужно использовать 33,44,55(по сути это теже файлы,только спаринные),т.е. чтобы не кидать 2 файлы [3] нужно закинуть один файл [33]. Это делается для файлов 3,4,5, файлы 1 и 2 незаменяемые.
Т.е. если нужно закинуть BLUE размера 98 -3 шт.,тогда нужно закинуть из папки [LayoutBlue98] по 3 файлы [1],[2] и еще по одному [33,44,55] и еще [3,4,5].
Думаю, если посмотрите на пример,станет легче) Автор — олежа525
Дата добавления — 23.01.2018 в 13:02
Источник
Как быстро создать список файлов из папки и перенести в таблицу «Excel».
Самый простой способ создания списка файлов, расположенных в папке.
Поделюсь простым проверенным способом создания списка файлов. Пошаговое руководство.
Шаг 1. Войти в папку список файлов из которой вы хотите сформировать.
Папка с файлами
Шаг 2. Кликнуть правой кнопкой по пустому полю в папке (не по файлу)
Создать текстовый документ
Шаг 3. Из выпадающего мену выбрать пункт «Создать»>> «Текстовый документ»
Шаг 4. Открыть появившийся текстовый документ и записать в него три строчки с кодом:
- chcp 1251
- echo From Ruexcel.ru %date% %time% >spisok_faylov.txt
- dir /b /d >> spisok_faylov.txt
Записать код в текстовый документ
Шаг 5. Закрыть с сохранением документ. Закрыть документ с сохранением
Шаг 6. Переименовать расширение файла с «TXT» на «BAT» и нажать кнопку «Enter»
Переименовать файл в BAT
Шаг 7. Запустить полученный файл.
Запуск файла и результат
После запуска .bat файла в папке, из которой вы его запустили появится текстовый документ со списком файлов хранящихся в папке, который будет называться «spisok_faylov.txt».
Готовый список файлов
Перенос списка в программу Excel.
Шаг 1. Открыть текстовый документ.
Шаг 2. Выделить левой кнопкой мыши список.
Выделение списка
Шаг 3. Нажав правой кнопкой мыши по выделению выбрать пункт «Копировать»
Копирование перечня
Шаг 4. Открыть документ Excel.
Вставка в Excel
Шаг 5 Кликнуть правой кнопкой мыши в любую ячейку и выбрать из выпадающего меню пункт «Вставить»
Резултат копирования списка
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
Excel как скопировать файлы по списку
И снова здравствуйте!
Пытаюсь макросом скопировать из папки «Откуда» (в т.ч. всех подпапках) в папку «Куда» файлы Excel по условию (наличию в названии символа, например «+»).
Нашел макрос который копирует все файлы Excel:
[vba]
Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = «C:UsersМвидеоDesktopОткуда»
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If Right(iFile.Name, 5) = «.xlsx» Then iFile.Copy «C:UsersМвидеоDesktopКуда» & «» & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
Но он не решает 2 вопроса:
1) Необходимо копирование файлов во всех подуровнях папки «Откда», т.е. пока берет верхний уровень только.
2) Необходимо копирование файлов Excel имя файлов которые содержат символ +
Первую часть даже не смог найти что-то подходящее как исправить.
Вторую часть попытался исправить 8 строку:
[vba]
Подскажите, пожалуйста, где нужно правильно допилить?
P.S. можете подсказать полезные ресурсы (на русском) со всеми кодами и их синтаксисами для обучения. Один нашел (ссылки на внешний ресурс нельзя выкладывать) но синтаксис выложен без примеров.
И снова здравствуйте!
Пытаюсь макросом скопировать из папки «Откуда» (в т.ч. всех подпапках) в папку «Куда» файлы Excel по условию (наличию в названии символа, например «+»).
Нашел макрос который копирует все файлы Excel:
[vba]
Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = «C:UsersМвидеоDesktopОткуда»
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If Right(iFile.Name, 5) = «.xlsx» Then iFile.Copy «C:UsersМвидеоDesktopКуда» & «» & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
Но он не решает 2 вопроса:
1) Необходимо копирование файлов во всех подуровнях папки «Откда», т.е. пока берет верхний уровень только.
2) Необходимо копирование файлов Excel имя файлов которые содержат символ +
Первую часть даже не смог найти что-то подходящее как исправить.
Вторую часть попытался исправить 8 строку:
[vba]
Подскажите, пожалуйста, где нужно правильно допилить?
P.S. можете подсказать полезные ресурсы (на русском) со всеми кодами и их синтаксисами для обучения. Один нашел (ссылки на внешний ресурс нельзя выкладывать) но синтаксис выложен без примеров. Anis625
Сообщение И снова здравствуйте!
Пытаюсь макросом скопировать из папки «Откуда» (в т.ч. всех подпапках) в папку «Куда» файлы Excel по условию (наличию в названии символа, например «+»).
Нашел макрос который копирует все файлы Excel:
[vba]
Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = «C:UsersМвидеоDesktopОткуда»
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If Right(iFile.Name, 5) = «.xlsx» Then iFile.Copy «C:UsersМвидеоDesktopКуда» & «» & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
Но он не решает 2 вопроса:
1) Необходимо копирование файлов во всех подуровнях папки «Откда», т.е. пока берет верхний уровень только.
2) Необходимо копирование файлов Excel имя файлов которые содержат символ +
Первую часть даже не смог найти что-то подходящее как исправить.
Вторую часть попытался исправить 8 строку:
[vba]
Подскажите, пожалуйста, где нужно правильно допилить?
P.S. можете подсказать полезные ресурсы (на русском) со всеми кодами и их синтаксисами для обучения. Один нашел (ссылки на внешний ресурс нельзя выкладывать) но синтаксис выложен без примеров. Автор — Anis625
Дата добавления — 16.01.2019 в 21:53
krosav4ig | Дата: Среда, 16.01.2019, 22:47 | Сообщение № 2 | |||||||||||||||||||||||||||||||||||||||||||
Ответить |
||||||||||||||||||||||||||||||||||||||||||||
|
Если у вас есть список имен файлов в столбце на листе, и файлы находятся в папке на вашем компьютере. Но теперь вам нужно переместить или скопировать эти файлы, имена которых указаны на листе, из их исходной папки в другую, как показано на следующем снимке экрана. Как вы могли выполнить эту задачу так быстро, как вы можете в Excel?
Копируйте или перемещайте файлы из одной папки в другую на основе списка в Excel с кодом VBA
Копируйте или перемещайте файлы из одной папки в другую на основе списка в Excel с кодом VBA
Чтобы переместить файлы из одной папки в другую на основе списка имен файлов, следующий код VBA может оказать вам услугу, пожалуйста, сделайте следующее:
1. Удерживайте Alt + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код VBA в окно модуля.
Код VBA: перемещать файлы из одной папки в другую на основе списка в Excel
Sub movefiles()
'Updateby Extendoffice
Dim xRg As Range, xCell As Range
Dim xSFileDlg As FileDialog, xDFileDlg As FileDialog
Dim xSPathStr As Variant, xDPathStr As Variant
Dim xVal As String
On Error Resume Next
Set xRg = Application.InputBox("Please select the file names:", "KuTools For Excel", ActiveWindow.RangeSelection.Address, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xSFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xSFileDlg.Title = " Please select the original folder:"
If xSFileDlg.Show <> -1 Then Exit Sub
xSPathStr = xSFileDlg.SelectedItems.Item(1) & ""
Set xDFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xDFileDlg.Title = " Please select the destination folder:"
If xDFileDlg.Show <> -1 Then Exit Sub
xDPathStr = xDFileDlg.SelectedItems.Item(1) & ""
For Each xCell In xRg
xVal = xCell.Value
If TypeName(xVal) = "String" And xVal <> "" Then
FileCopy xSPathStr & xVal, xDPathStr & xVal
Kill xSPathStr & xVal
End If
Next
End Sub
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится диалоговое окно с напоминанием о выборе ячеек, содержащих имена файлов, см. снимок экрана:
4. Затем нажмите OK и в появившемся окне выберите папку, содержащую файлы, из которых вы хотите переместиться, см. снимок экрана:
5, Затем нажмите OK, продолжайте выбирать папку назначения, в которой вы хотите найти файлы, в другом всплывающем окне, см. снимок экрана:
6, Наконец, нажмите OK чтобы закрыть окно, и теперь файлы были перемещены в другую папку, которую вы указали на основе имен файлов в списке листов, см. снимок экрана:
Внимание: Если вы просто хотите скопировать файлы в другую папку, но сохранить исходные файлы, примените приведенный ниже код VBA:
Код VBA: копирование файлов из одной папки в другую на основе списка в Excel
Sub copyfiles()
'Updateby Extendoffice
Dim xRg As Range, xCell As Range
Dim xSFileDlg As FileDialog, xDFileDlg As FileDialog
Dim xSPathStr As Variant, xDPathStr As Variant
Dim xVal As String
On Error Resume Next
Set xRg = Application.InputBox("Please select the file names:", "KuTools For Excel", ActiveWindow.RangeSelection.Address, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xSFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xSFileDlg.Title = "Please select the original folder:"
If xSFileDlg.Show <> -1 Then Exit Sub
xSPathStr = xSFileDlg.SelectedItems.Item(1) & ""
Set xDFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xDFileDlg.Title = "Please select the destination folder:"
If xDFileDlg.Show <> -1 Then Exit Sub
xDPathStr = xDFileDlg.SelectedItems.Item(1) & ""
For Each xCell In xRg
xVal = xCell.Value
If TypeName(xVal) = "String" And xVal <> "" Then
FileCopy xSPathStr & xVal, xDPathStr & xVal
End If
Next
End Sub
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
всем добрый вечер, если кто может помогите пжлс, срочно надо решить проблему. Есть макрос, который переносит данные с других листов, в которых указаны формулы, а мне необходимо копировать как значения. Макрос прилагаю. Что мне в нем необходимо исправить
Sub St()
‘Код рассчитан на то, что вид исходных таблиц сверху
‘и снизу меняться не будет. Т.е. жёстко прописано количество
‘дополнительных строк сверху и снизу.
Const fldr = «C:UsersнатаDesktopмакрос» ‘ Путь к папке с файлами, можно добавить
‘ стандартный диалог выбора папки или диалог
‘ выбора самих файлов для обработки
Dim strFile As String, wb As Workbook, wsSum As Workbook
Application.ScreenUpdating = False ‘нет мелькания на экране
Set wsSum = ThisWorkbook
strFile = Dir(fldr & «*.xlsx»)
Do While strFile <> «» ‘Цикл по файлам
Set wb = Workbooks.Open(fldr & strFile, ReadOnly:=True)
With wsSum.Sheets(1)
iLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(iLastRow, 1).Value = Now()
Set tbl = wb.Sheets(1).Range(«A7»).CurrentRegion ‘ определяет именно таблицу
tbl.Offset(1, 0).Resize(tbl.Rows.Count — 1, _
tbl.Columns.Count).Copy .Range(.Cells(iLastRow, 2), .Cells(iLastRow, 2))
Оператор FileCopy поможет:
FileCopy полный_путь_к_файлу, путь_вставки_с_именем_файла
Всего одна строка, но перед ней… Нужно копировать много файлов да по разным адресам, обойти ошибки, получить имя файла из полного пути…
' копирование файлов из списка по указанным папкам'
' строка 1 - "шапка", ст.A - имена файлов, ст. B - путь копирования'
' при отсутствии папки для копирования папка создается'
' Формируется список: файлов, которые не найдены; созданных папок'
' список выводится в столбцы D:F, информация: строка, папка/файл, путь'
Sub CopyFiles()
Dim aPath(), aErr()
Dim sFName As String
Dim lRw As Long
Dim i As Long, k As Long, n As Long
With ActiveSheet ' или другой лист: With WorkSheets("ссылки")'
lRw = .Cells(.Rows.Count, 1).End(xlUp).Row: If lRw < 2 Then Exit Sub
aPath = .Range("A1:B" & lRw).Value ' имена и пути в массив'
End With
ReDim aErr(1 To lRw * 2, 1 To 3) ' массив для ошибок'
Application.ScreenUpdating = False
For i = 2 To lRw
If Dir(aPath(i, 2), vbDirectory) = "" Then ' проверяем наличие папки для копирования'
k = k + 1: aErr(k, 1) = i
aErr(k, 2) = "папка": aErr(k, 3) = aPath(i, 2)
MkDir aPath(i, 2)
End If
If Dir(aPath(i, 1), vbDirectory) = "" Then ' файла нет'
k = k + 1: aErr(k, 1) = i
aErr(k, 2) = "файл": aErr(k, 3) = aPath(i, 1)
Else ' файл есть'
sFName = Mid$(aPath(i, 1), InStrRev(aPath(i, 1), "")) ' извлекаем имя_файла'
n = n + 1: FileCopy aPath(i, 1), aPath(i, 2) & sFName ' копируем файл'
End If
Next i
If k > 0 Then ActiveSheet.Cells(2, 4).Resize(k, 3).Value = aErr ' ошибки на лист'
Application.ScreenUpdating = True
MsgBox "Копировано файлов: " & n & Chr$(10) & "Ошибок: " & k, 64, "OK"
End Sub
Примечание: наличие диска не проверяется. Если диск (например F) отсутсствует, получим ошибку. Если такое не исключается, нужно дописать проверку:
If Dir(Split(aPath(i, 2), ":")(0), vbDirectory) = "" Then
...
Самый простой способ создания списка файлов, расположенных в папке.
Поделюсь простым проверенным способом создания списка файлов. Пошаговое руководство.
Шаг 1. Войти в папку список файлов из которой вы хотите сформировать.
Шаг 2. Кликнуть правой кнопкой по пустому полю в папке (не по файлу)
Шаг 3. Из выпадающего мену выбрать пункт «Создать»>> «Текстовый документ»
Шаг 4. Открыть появившийся текстовый документ и записать в него три строчки с кодом:
- chcp 1251
- echo From Ruexcel.ru %date% %time% >spisok_faylov.txt
- dir /b /d >> spisok_faylov.txt
Записать код в текстовый документ
Шаг 5. Закрыть с сохранением документ.
Шаг 6. Переименовать расширение файла с «TXT» на «BAT» и нажать кнопку «Enter»
Шаг 7. Запустить полученный файл.
После запуска .bat файла в папке, из которой вы его запустили появится текстовый документ со списком файлов хранящихся в папке, который будет называться «spisok_faylov.txt».
Перенос списка в программу Excel.
Шаг 1. Открыть текстовый документ.
Шаг 2. Выделить левой кнопкой мыши список.
Шаг 3. Нажав правой кнопкой мыши по выделению выбрать пункт «Копировать»
Шаг 4. Открыть документ Excel.
Шаг 5 Кликнуть правой кнопкой мыши в любую ячейку и выбрать из выпадающего меню пункт «Вставить»