Доброго утра, Планетяне! Прошу написать несколько строк кода для примера.
Описание процесса работы
Ситуёвина такая: есть папка со сканами в 2х форматах — jpeg и pdf. Имена файлов — целые положительные числа (простая сплошная индексация). В Excel есть список файлов (целые положительные числа — по одному в ячейке), которые нужно найти в папке сканов и перенести в другое место. У Димы подсмотрел диалоговое окно выбора всех файлов в папке (см. другой спойлер). Получается, на выходе у меня есть массив из одного или более x, то есть массив полных путей ко всем файлам выбранной папки. Вопрос: как мне в это полученном массиве найти нужное и перенести в другое место. И имеет ли значение, что расширения файлов два???
Пример кода для диалогового окна выбора папки от Дмитрия «The_Prist»
Код
Sub ShowFolderDialog()
Dim oFD As FileDialog
Dim x, lf As Long
'назначаем переменной ссылку на экземпляр диалога
Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
With oFD 'используем короткое обращение к объекту
'так же можно без oFD
'With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Выбрать папку с отчетами" '"заголовок окна диалога
.ButtonName = "Выбрать папку"
.Filters.Clear 'очищаем установленные ранее типы файлов
.InitialFileName = "C:\Temp\" '"назначаем первую папку отображения
.InitialView = msoFileDialogViewLargeIcons 'вид диалогового окна(доступно 9 вариантов)
If oFD.Show = 0 Then Exit Sub 'показывает диалог
'цикл по коллекции выбранных в диалоге файлов
x = .SelectedItems(1) 'считываем путь к папке
MsgBox "Выбрана папка: '" & x & "'", vbInformation, "www.excel-vba.ru"
End With
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал:как мне в это полученном массиве найти нужное
нужное соберите в словарь... потом бегите по массиву взятого, сверяя If dic.exists(x(i)) & желаемое расширение... Then копируйте... p.s. у Игоря [excelvba.ru] где-то был пример, как указывать опр. тип (вид файла) видимых в окне выбора файлов... чтобы сразу не смотреть лишние... p.p.s Jack Famous не верю, что за время вашего пребывания на форуме вы не научились Поиском находить простейшие кирпичики, из которых выстраивать код конкретно под свои потребности... или вы нам предлагаете пользоваться Поиском вместо вас?... ну ооочень общий вопрос - из которого не понятны ваши затруднения успехов вам
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
JeyCi, доброго дня, уважаемая))))) вот то, что у Игоря нашёл))) Смотрите: 1. список файлов из папки сканов Path1 в виде переменной arr_scan получить могу 2. список имён файлов, необходимых для поиска из диапазона получить тоже могу: arr_find=Selection.Value. Сравнить (вывести, что найдены X из Y файлов) их и переместить найденное в другую папку Path2 — не могу)))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал:Сравнить (вывести, что найдены X из Y файлов) их и переместить найденное в другую папку Path2 — не могу)))
а это не помогает?
Цитата
JeyCi написал: нужное в словарь... потом бегите по массиву взятого, сверяя If dic.exists(x(i)) & желаемое расширение...
p.s. очень тормозит i'net - почистила Cookie - на время смогла зайти... иначе ни одна страница не грузится с 1-го раза... хоть бы с 10-го... поэтому я здесь проходом...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
JeyCi написал: нужное соберите в словарь... потом бегите по массиву взятого, сверяя If dic.exists(x(i)) & желаемое расширение... Then копируйте...
вот с этим проблемы, т.к. раньше не делал (да - всё бывает в первый раз) если у вас получиться, буду рад простейшему макросу с примером такого прохода/проверки и копированием во что-то ещё (словарь/массив?)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: если у вас получиться, буду рад
написать макрос с нуля под ключ? - получится... но с таким подходом вам лучше в Раздел Работа... у вас не вопрос, у вас Тех.Задание - и нежелание пробовать самому... см. много примеров от Hugo... *** не надо брать на слабо... - не получится...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
JeyCi написал: не надо брать на слабо... - не получится...
вы просто меня неправильно поняли - причём тут слабо вообще? Мне ли сомневаться в ваших талантах, да и, простите, меня это не должно касаться. Я имел ввиду найдёте ли время/посчитаете ли нужным. Я всё понял. Про тех. задание я с вами тоже не согласен: я провёл работу и чётко написал, что не получается. Вы мне говорите что-то типа "пробегитесь по этому и заберите в словарь" - и я бы принял это к сведению, если бы знал, о чём речь. Всё, что мне нужно - это несколько маленьких примеров, а именно, как сравнить 2 массива и как скопировать файлы по списку из Путь1 в Путь2
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Всем доброго дня! Решил купить готовое решение у Игоря со всеми проверками, удобными окнами и так далее. Надстройка позволяет искать переименовывать и перемещать файлы (не посчитайте рекламой, денег я за это не получаю, просто многими его решениями пользуюсь. PLEX и Multex тоже стоят). Решение нужно стабильное, для работы, поэтому на себя, на этапе изучения, положиться не могу)))) надстройка работает не так, как нужно — брать не стал. Подробно и наглядно с пошаговыми примерами о словарях можно почитать вот тут - обязательно вернусь, когда буду свои решения делать.
P.S.: прикольная и бесплатная надстройка для продвинутого сравнения 2х списков/столбцов/диапазонов (не в макросе, а просто) - вот тут.
P.P.S.: нашёл тут на форуме обсуждение кое-чего похожего
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄