Страницы: 1
RSS
Список файлов в папке через макрос
 
Здравствуйте.
Есть вот такой приём, но у меня он почему-то вставляет только одно значение - неважно, сколько файлов в каталоге, пишет одно название и всё. :(
Может кто увидит, где ошибка?
И параллельно. вопрос.
Можно ли сделать так, чтобы этот макрос добавлял данные, не перезаписывая? Т.е., открыв книгу в которой уже есть список файлов на листе, запустив макрос, на выходе получить файл с обновлёнными данными? При этом чтобы не добавлял уже существующие, а только такие, которых нет?
 
rinolga,
Код
IncludeSubFolders<>IncludeSubfolders
Source.Folder<>SourceFolder
diffchecker
Изменено: Андрей Лящук - 18.03.2019 03:18:26
 
Андрей Лящук,ткните носом, пожалуйста, куда нужно прописать данные строки? :(  далека я от этого, к сожалению...

Наткнулась на вот такую статью, интересует 3й способ. Пробую адаптировать под русскоязычный Excel и...ничего.
Код
=IFERROR(INDEX(GetFileNamesbyExt($A$1,$B$1),ROW()-2),"") 

прописываю
Код
=ЕСЛИОШИБКА(ИНДЕКС(GetFileNamesbyExt($A$1,$B$1),СТРОКА()-2),"") 
и получаю ругательства....
Надеюсь на подсказку
 
Есть ещё вот такой код.
Вопрос: как и что нужно прописать так, чтобы он искал по 2 определённым папкам, и выводил информацию в столбцы А,В? Т.е. в столбец А мне нужно вывести список файлов из папки 1, в столбец 2 - список файлов из папки 2.
Код
Sub ListAllFileNames()
  Dim strTargetFolder As String, strFileName As String, nCountItem As Integer

  '  Initialization
  nCountItem = 1
  strTargetFolder = "C:\Users\Sample\Desktop\Sales Volume" & "\"
  strFileName = Dir(strTargetFolder, vbDirectory)

  '  Get the file name
  Do While strFileName <> ""
    If strFileName <> "." And strFileName <> ".." Then
      Cells(nCountItem, 1) = strFileName
      nCountItem = nCountItem + 1
    End If
    strFileName = Dir
  Loop
End Sub
Изменено: rinolga - 18.03.2019 14:44:58
 
rinolga, зравствуйте.
1. Приёмы
2. Макрос или готовая надстройка
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous,здравствуйте. с 1го пункта и был задан вопрос:) п.2 тоже видела, спасибо :)
Цитата
rinolga написал:
И параллельно. вопрос.Можно ли сделать так, чтобы этот макрос добавлял данные, не перезаписывая? Т.е., открыв книгу в которой уже есть список файлов на листе, запустив макрос, на выходе получить файл с обновлёнными данными? При этом чтобы не добавлял уже существующие, а только такие, которых нет?
Вопрос актуален..
 
Удалите из кода (по Вашей ссылке) строку
Код
X = Source.Folder.Path
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо  ;)
и всё-таки вопросы актуальны..в особенности по поводу этого сообщения... :(  
 
rinolga, при переводе формул на русский, меняйте запятые на точку с запятой.
 
Цитата
rinolga написал: Можно ли сделать так, чтобы этот макрос добавлял данные, не перезаписывая? ... только такие, которых нет?
Если список файлов НЕ очищать, то в нем могут (и будут) оставаться файлы, которые существовали на момент формирования списка, но затем удаленные/перемещенные из этой папки, а так список файлов всегда будет актуальным
Согласие есть продукт при полном непротивлении сторон
 
Цитата
rinolga написал: вывести список файлов из папки 1, в столбец 2 - список файлов из папки 2
А эти 'папка1' и 'папка2' имеют в своем полном пути общую часть? Они сами находятся в одной папке?
Согласие есть продукт при полном непротивлении сторон
 
Проверяйте
Скрытый текст
Изменено: Sanja - 19.03.2019 08:25:18
Согласие есть продукт при полном непротивлении сторон
 
Юрий М, спасибо, работает!! :)
Sanja, и Вам спасибо, в процессе проверки как раз - правда код не хочет нормально вставляться, воюю...
Скопировался :) ещё раз спасибо огромное!  :) по поводу вопроса о путях папок - да, на одном диске. Грубо говоря путь такой: С:\123\абв\папка1, а для второй С:\123\абв\гдж\папка2. Думаю смогу подправить :)
Изменено: rinolga - 19.03.2019 23:57:16
 
Цитата
rinolga написал:
код не хочет нормально вставляться
Как это проявляется?
 
Юрий М, уже всё хорошо :) были красные строки по тексту. Видимо как-то недокопировала, не знаю. Сейчас всё хорошо :)
 
Приветствую Всех!
Из всех тем эта наиболее близка по смыслу моей сложности.
У меня есть заранее прописанный список файлов, которые всегда имеют идентичные имена и расширения.
Предположим файлы "Ира", "Вася", "Петя", "Света"
Всего их девять штук и они всегда лежат в одной и той же папке (для примера папка "Дети").
Все файлы разного типа и метод загрузки для каждого из них свой.

Рабочий файл ОДНИМ макросом подгружает данные из этих файлов, поочерёдно из каждого файла.  
Я не смог пока найти решение следующей задачи:
На кнопке макроса прописан код:
If Dir("C:\Дети\Импорт\Вася.xlsx") = "" Then
MsgBox "нет файла Вася.xlsx"
End If
И так для каждого файла.
Но с одной стороны это громоздко как-то, а потом, при начале загрузки данных, если какой-то файл отсутствует, то предварительно уже выполненные действия макросом, просто останавливаются..
Вопрос:
Как проверить наличие не каждого отдельно файла, а сразу всего списка, через одно применение "If ", чтобы при отсутствии любого из этих файлов макрос просто завершился ?
Спасибо !
 
запишите где-то в начале процедуры
Код
  Dim fs, f, nof$
  fs = Array("f1", "f2", "f3")
  For Each f In fs
    If Dir(f) = "" Then nof = nof & vbLf & f
  Next
  If Len(nof) Then MsgBox nof, vbCritical, "Не найдено!!!": Exit Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
запишите где-то в начале процедуры
Код
    [URL=#]?[/URL]       1  2  3  4  5  6          Dim   fs, f, nof$        fs = Array(  "f1"  ,   "f2"  ,   "f3"  )        For   Each   f   In   fs          If   Dir(f) =   ""   Then   nof = nof & vbLf & f        Next        If   Len(nof)   Then   MsgBox nof, vbCritical,   "Не найдено!!!"  :   Exit   Sub   
 
Под "f1" понимается полное имя каждого файла, включая путь и его расширение?
 
да, то, что вы можете в Dir запихнуть "C:\Дети\Импорт\Вася.xlsx"
или может быть только имя файла и тогда
 If Dir("C:\Дети\Импорт\"  & f) .... если все дети импортные
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Да вот что-то не выходит у меня...
Ругается, причём в окно выводит список тех файлов, которые на самом деле лежат в папке.
Даже при полном наличии всех файлов не хочет пропускать запуск макроса
 
Всё работает отлично!!!
Спасибо огромное!!!
 
компьютер не умеет прикалываться
сколько файлов нет - столько и будет перечислено в сообщении о ненайденных файлах
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
компьютер не умеет прикалываться
... но с его помощью можно.
Изменено: sokol92 - 19.01.2023 18:06:39
Владимир
Страницы: 1
Наверх