Страницы: 1 2 След.
RSS
Как получить информацию о наличии файлов в папке
 
Есть папка с файлами 1.xls, 2.xls, 3.xls и т.д. Папка еженедельно обновляется, т.е. после обработки старые файлы удаляет и в понедельник получаем новые. Список файлов, которые д.б. в папке известен.  
Можно ли открыв рабочий файл где консолидируется информация файлов из папки получать информацию о лежащих в папке файлов? и как это сделать?  
 
Пример:  
Папка: 1.xls, 2.xls, 3.xls и т.д.  
Рабочий файл:  
Список   Отметка наличия  
1.xls          да  
2.xls          нет  
3.xls          да
 
отвечу как у меня организовано подобное.  
есть консалидированный файл в котором указаны ссылки на ячейки из файла файл 1.xls, 2 ..., ,3  и т.д. около 50 файлов.  
 
я их не УДАЛЯЮ!!!, а просто заменяю старые файлы на новые.  
 
Естественно предвижу вопрос, а как понять гле старые данные а где новые ?  
 
Ответ:  
В одной из ячеек указана дата, и в сводном файле исли дата недельной давности, то данные старые.  
 
Можно сделать так, что бы при сохранеие файла Пользователем, у тебя автоматом ставилась текущая дата в ячейке А1. (это на случай если пользователь забывает проставить дату).  
 
лично я просто всем рассылаю еженедельно НОВЫЕ файлы с новой датой.
 
Здесь мне бы хотелось немного другое. в моем случае главное своевременность выкладки новых файлов (есть установленный срок). файлов около 100 и конечно названия у них не 1,2,3 и т.д.  
Поэтому нужно понимать какой файл отсутствует и сразу будет понятно кто за него ответственный.  
Кроме того обработка файлов не связана с ссылками на информацию содержащуюся в них...
 
Решение через пользовательскую функцию:  
Function наличие_файла(полный_путь_к_файлу As String) As String  
наличие_файла = IIf(Dir(полный_путь_к_файлу) = "", "нет", "да")  
End Function
Bite my shiny metal ass!      
 
Спасибо!!!  
А как это завязать с моим рабочим файлом чтобы на листе шло отражение результата отработки макроса?
 
а можно макрос поиска файлов с вставкой найденных имен файлов в лист  
примеры естьв сети
 
Я правильно записал код? скорее всего нет...  
 
Sub tyj()  
Function наличие_файла(полный_путь_к_файлу As String) As String  
наличие_файла = IIf(Dir(полный_путь_к_файлу) = "C:\Documents and Settings\Кабанов Павел\Рабочий стол\12.10-18.10", "нет", "да")  
End Function  
End Sub  
 
Если без Sub то как он работать будет? Можно прописать код макроса во вложенном файле?
 
два варианта.  
с пользовательской функцией и именами.
Bite my shiny metal ass!      
 
Огромное спасибо за помощь!!! Но появилась новая проблема: дело в том, что вся информация хранится не на локальном диске а на сервере и соответственно данный вариант не работает поскольку установив путь и создав нужный файл: результат "нет"  
 
:-(
 
HELP!!! HELP!!! HELP!!!
 
А еще вопрос можно сделать так чтобы с кнопки в листе началась проверка??? Для это я так понимаю надо в Sub ... End Sub заключать функцию, но в итоге ошибка...
 
\\ пробовал... не работает...я полностью копирал путь...
 
Все понял в чем причина...  
 
А еще вопрос можно сделать так чтобы с кнопки в листе началась проверка??? Для это я так понимаю надо в Sub ... End Sub заключать функцию, но в итоге ошибка...
 
{quote}{login=uvexx}{date=27.10.2009 02:47}{thema=}{post}Все понял в чем причина...  
 
А еще вопрос можно сделать так чтобы с кнопки в листе началась проверка??? Для это я так понимаю надо в Sub ... End Sub заключать функцию, но в итоге ошибка...{/post}{/quote}  
 
Private Sub CommandButton1_Click()  
Module.Macros1  
End Sub
 
делаем функции/имена летучими, чтобы они пересчитывались с пересчетом листа и по F9
Bite my shiny metal ass!      
 
не получается завязать у меня проверку :-(  
 
есть кнопка, которая вызывает меню проверки; выбираю временной интервал в combobox далее надо подтвердить или отменить проверку...  
 
а как сделать?
 
1. Читаем правила относительно формата файлов. У меня 2003-й, хоть и с конвертером, но работать не хочет.  
2. Что Вы хотите от недели? Каким образом она связана с наличием отсутствием файлов в папке?  
3. Функция в отличие от процедуры запускается при пересчете. Ее не надо запускать кнопкой.
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=27.10.2009 05:55}{thema=}{post}1. Читаем правила относительно формата файлов. У меня 2003-й, хоть и с конвертером, но работать не хочет.  
2. Что Вы хотите от недели? Каким образом она связана с наличием отсутствием файлов в папке?  
3. Функция в отличие от процедуры запускается при пересчете. Ее не надо запускать кнопкой.{/post}{/quote}  
 
Хотелось бы следующее:  
1. при нажатии кнопки "Нажмите для открытия..." открывалось диалоговое окно - работает  
2. при выборе в ComboBox записи и нажатии кнопки "Подтвертите выбор" работал макрос включающий функцию проверки наличия_файла при этом результат проверки отражатся должен в соответствующем столбце, который соответствует выбранной в диалоговом окне записи - не работает :-(  
 
Примечание:  работа функции осложняется еще тем, что файлы, которые проверяются на наличие расположены не в одной папке, а в папках ответственных  
 
Пожалуйста помогите!!!
 
Начальную позицию для отработки функции понял как сделать...  
 
Ребят помогите сделать так чтобы проверка по пользовательской функции работала!!!  
 
Пробовал ActivateCells.FormulaR1C1 = "=наличие_файла(...)"  
 
Не работает...
 
есть вот такая страка формулы:  
 
ActiveCell.FormulaR1C1 = _  
       "=наличие_файла(""\\file\44-я 26.10-01.11\""&RC[-1])"
 
Подскажите как правильно записать RC[-1] чтобы работал счетчик, например,
a = 1  
Do  
a = a + 1  
Loop ...
 
Я в игноре :-(((
 
{quote}{login=uvexx}{date=28.10.2009 03:21}{thema=}{post}ActiveCell.FormulaR1C1 = _  
       "=наличие_файла(""\\file\44-я 26.10-01.11\""&RC[-1])"
post}{/quote}  
 
непонятна формула
 
{quote}{login=}{date=28.10.2009 04:21}{thema=}{post}Я в игноре :-((({/post}{/quote}Совесть где?  
Я не могу круглосуточно на форума сидеть. Мне еще работать надо.  
Пробуйте. Если имена папок не те - я не виноват.
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=28.10.2009 04:44}{thema=Re: }{post}{quote}{login=}{date=28.10.2009 04:21}{thema=}{post}Я в игноре :-((({/post}{/quote}Совесть где?  
Я не могу круглосуточно на форума сидеть. Мне еще работать надо.  
Пробуйте. Если имена папок не те - я не виноват.{/post}{/quote}  
 
Спасибо огромное!!!  
 
Скажите Dir и для файлов и для папок?
 
Да, но проверять можно раздельно. А можно и не разбирая.
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=28.10.2009 04:58}{thema=}{post}Да, но проверять можно раздельно. А можно и не разбирая.{/post}{/quote}  
 
Прошу прощения за беспокойство, но что-то не работает...  
Сделал такую же функцию но для папки  
 
Function наличие_папки(полный_путь_к_папке As String) As String  
наличие_папки = IIf(Dir(ный_путь_к_папке) = "", "да", "нет")  
End Function  
 
в Exel пишу    
=наличие_папки("\\file\документы\Служба розничных продаж\Отчетность\"&A12)  
 
ячейка А12 = Беляева\  результат "нет"  
ячейка А12 = Беляева   результат "нет"  
 
Что не так?
 
я тут подумал а что если создать двойную функцию, поскольку файлы находятся в разных папках, но при этом условие да, нет на файл должно оставаться...Прикинул как-то так должно писаться:  
 
Function наличие_файла2(полный_путь_к_папке As String, путь_к_файлу As String) As String  
наличие_файла2 = Dir(полный_путь_к_папке) = "", IIf(Dir(полный_путь_к_файлу) = "", "нет", "да")  
End Function  
 
но не работает:-(  
 
Может кто подскажет есть ли где статьи посвященные написанию пользовательских функций???
 
{quote}{login=}{date=28.10.2009 05:12}{thema=Re: }{post}{quote}{login=Лузер™}{date=28.10.2009 04:58}{thema=}{post}Да, но проверять можно раздельно. А можно и не разбирая.{/post}{/quote}  
 
Прошу прощения за беспокойство, но что-то не работает...  
Сделал такую же функцию но для папки  
 
Function наличие_папки(полный_путь_к_папке As String) As String  
наличие_папки = IIf(Dir(ный_путь_к_папке) = "", "да", "нет")  
End Function  
 
в Exel пишу    
=наличие_папки("\\file\документы\Служба розничных продаж\Отчетность\"&A12)  
 
ячейка А12 = Беляева\  результат "нет"  
ячейка А12 = Беляева   результат "нет"  
 
Что не так?{/post}{/quote}Не знаю что у Вас не так.  
У меня работает (скопировал Ваш код отсюда)  
На конце "\" не нужен  
Может это - "Dir(ный_путь_к_папке)"?
Bite my shiny metal ass!      
 
{quote}{login=}{date=28.10.2009 05:40}{thema=}{post}я тут подумал а что если создать двойную функцию, поскольку файлы находятся в разных папках, но при этом условие да, нет на файл должно оставаться...Прикинул как-то так должно писаться:  
 
Function наличие_файла2(полный_путь_к_папке As String, путь_к_файлу As String) As String  
наличие_файла2 = Dir(полный_путь_к_папке) = "", IIf(Dir(полный_путь_к_файлу) = "", "нет", "да")  
End Function  
 
но не работает:-(  
 
Может кто подскажет есть ли где статьи посвященные написанию пользовательских функций???{/post}{/quote}Что Вы хотели получить от наличие_файла2?  
Думаю, что спец статей нет. Синтаксис не отличается от всего остального синтаксиса в VBA.  
Вы объявляете функцию Function наличие_файла2()  
даете ей аргументы Function наличие_файла2(аргумент1, аргумент2 ... аргументZ )  
выполняете некие вычисления  
Function наличие_файла2(аргумент1, аргумент2 ... аргументZ )  
temp=аргумент1+аргумент2*аргументZ  
Желательно присваивать функции результат, можно неоднократно, можно и аргумент менять:  
Function наличие_файла2(аргумент1, аргумент2 ... аргументZ )  
temp=аргумент1+аргумент2*аргументZ  
наличие_файла2=аргумент1  
аргумент1=temp  
наличие_файла2=dir(наличие_файла2)  
 
Есть одно ограничение:  
функция, вызываемая с листа, может производить только вычисления. Т.е. не может копировать ячейки, менять их и их форматы, переименовывать листы сохранять файлы и т.п.  
Одним словом ведет себя как любая другая функция листа - СУММ или ВПР
Bite my shiny metal ass!      
 
{quote}{login=Лузер™}{date=28.10.2009 07:45}{thema=Re: }{post}{quote}{login=}{date=28.10.2009 05:40}{thema=}{post}я тут подумал а что если создать двойную функцию, поскольку файлы находятся в разных папках, но при этом условие да, нет на файл должно оставаться...Прикинул как-то так должно писаться:  
 
Function наличие_файла2(полный_путь_к_папке As String, путь_к_файлу As String) As String  
наличие_файла2 = Dir(полный_путь_к_папке) = "", IIf(Dir(полный_путь_к_файлу) = "", "нет", "да")  
End Function  
 
но не работает:-(  
 
Может кто подскажет есть ли где статьи посвященные написанию пользовательских функций???{/post}{/quote}Что Вы хотели получить от наличие_файла2?  
Думаю, что спец статей нет. Синтаксис не отличается от всего остального синтаксиса в VBA.  
Вы объявляете функцию Function наличие_файла2()  
даете ей аргументы Function наличие_файла2(аргумент1, аргумент2 ... аргументZ )  
выполняете некие вычисления  
Function наличие_файла2(аргумент1, аргумент2 ... аргументZ )  
temp=аргумент1+аргумент2*аргументZ  
Желательно присваивать функции результат, можно неоднократно, можно и аргумент менять:  
Function наличие_файла2(аргумент1, аргумент2 ... аргументZ )  
temp=аргумент1+аргумент2*аргументZ  
наличие_файла2=аргумент1  
аргумент1=temp  
наличие_файла2=dir(наличие_файла2)  
 
Есть одно ограничение:  
функция, вызываемая с листа, может производить только вычисления. Т.е. не может копировать ячейки, менять их и их форматы, переименовывать листы сохранять файлы и т.п.  
Одним словом ведет себя как любая другая функция листа - СУММ или ВПР{/post}{/quote}  
 
не совсем понял...  
 
может на пальцах объясните?..  
 
есть путь \\file\документы\Служба розничных продаж\Отчетность\Адищев\Еженедельные\26.10-01.11\1.xls  
 
папки "Адищев" и "26.10-01.11" переменные значения, также файлы внутри папок переменные  
все остальное постоянное (const)  
 
получается что пользовательская функция должна выглядеть так-то так:  
 
=наличие_файла("\\file\документы\Служба розничных продаж\Отчетность\;А5;\Еженедельные\;С4;\"&В5)  
 
где - A5 - папка, в которой нужно искать файл В5  
     С4 - папка "26.10-01.11" задающаяся ComboBox  
 
соответственно:  
аргумент 1 - \\file\документы\Служба розничных продаж\Отчетность\  
аргумент 2 - А5 (он же "Адищев\")  
аргумент 3 - \Еженедельные\  
аргумент 4 - С4 (папка "26.10-01.11")  
аргумент 5 - \  
 
а как дальше все обрисовать с условием "да", "нет"?
Страницы: 1 2 След.
Читают тему
Наверх