Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 11:40   #1
Milo4ka_Lucy
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 31
Восклицание Открытие всех файлов xls в папке

Доброе утро всем!
Вопрос такой: как открыть все файлы .xls во всех папках, имя которых начинается с "09"?
Причем сначала открыть все файлы из одной папки, что-то сделать с данными, потом закрыть, а только потом открыть все из другой.

Заранее спасибо за помощь!
Не ругайте, если уже была такая тема.
Milo4ka_Lucy вне форума Ответить с цитированием
Старый 23.09.2010, 12:01   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Сначала получаете список имён подходящих файлов: http://excelvba.ru/code/FilenamesCollection
Потом в цикле открываете по очереди эти файлы, вносите изменения, и закрываете каждый с сохранением.

Непонятно, надо ли открывать такой файл: C:\Documents\09test\folder\file.xls
И откуда (с какой папки) начинать поиск?
EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 12:17   #3
Milo4ka_Lucy
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 31
По умолчанию

Имена папок- даты, т.е. 09-01-2010. Все такого вида
папки лежат на диске D.
Может, имя папки я и сама прописывать буду.
А вот как открыть все файлы .xls в этой папке?
Спасибо за ссылку. Читаю, чешу репу.=)
Milo4ka_Lucy вне форума Ответить с цитированием
Старый 23.09.2010, 12:49   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
А вот как открыть все файлы .xls в этой папке?
А зачем их открывать?
Подробнее опишите, что вы будете делать с файлами.
(неохота потом переписывать код - когда вы уточните, что там надо получить в итоге)

Ну и прикрепите примеры файлов при необходимости.
EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 13:04   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Получить список нужных подпапок можно так: http://excelvba.ru/code/SubFoldersCollection

Остальной код - чуть позже, если будет время...
EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 13:08   #6
Milo4ka_Lucy
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 31
По умолчанию

Есть тьма файлов с маленькой табличкой, ее местоположение на листе всегда одно. Папки- даты. Файлы-время. Надо просто получить общую сумму по каждой графе из этой таблицы для каждой даты.
Но чтобы не открывать файлы самой, я хотела просто открыть все файлы .xls из этой папки, а потом уже создать цикл считывания и суммирования для каждой открытой книги
Milo4ka_Lucy вне форума Ответить с цитированием
Старый 23.09.2010, 13:11   #7
Milo4ka_Lucy
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 31
По умолчанию

Спасибо за код=)
Milo4ka_Lucy вне форума Ответить с цитированием
Старый 23.09.2010, 13:15   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Ваш макрос будет выглядеть примерно так:

Код:
Sub Main()
    Application.ScreenUpdating = False    ' отключаем обновление экрана
    Dim wb As Workbook

    ' считываем в колекцию coll нужные имена файлов (поиск папок с названием, начинающимся на 09)
    Set СписокПапок = SubFoldersCollection("d:\", "09*")

    For Each Папка In СписокПапок    ' перебираем подходящие папки
        ' ищем все файлы excel в очередной папке
        For Each Файл In FilenamesCollection(Папка, ".xls", 1)    ' перебираем подходящие файлы
            ' выводим очередной путь к файлу в строку состояния
            Application.StatusBar = "Обрабатывается книга: " & Файл

            Set wb = Workbooks.Open(Файл)    ' открываем очередной файл
            wb.Worksheets(1).[d5] = "текст"    ' пишем текст в ячейку D5
            wb.Close True    ' закрываем очередной файл с сохранением изменений

        Next Файл
    Next Папка
    Application.StatusBar = False
End Sub
Пример в виде файла:

EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 13:18   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Надо просто получить общую сумму по каждой графе из этой таблицы для каждой даты.
Всё это можно было попробовать сделать при помощи формул - если заранее известны названия листов и адреса диапазонов для суммирования.
EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 13:46   #10
Milo4ka_Lucy
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 31
По умолчанию

На ошибки не ругается, но даже список папок не печатает.
Никакие библиотеки подключать специально не надо для работы кода?
Milo4ka_Lucy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Достать названия всех файлов в папке BETONOMESHALKA Помощь студентам 5 23.01.2015 10:05
Изменение всех ссылок в XLS. KOM-STAR Microsoft Office Excel 2 13.05.2010 15:50
Взять инфо со всех файлов находящихся в папке sasha_prof Microsoft Office Excel 1 15.03.2010 10:47
Переименование файлов в папке. mr_Smitt Общие вопросы Delphi 1 28.09.2009 17:20
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке. RammFan Win Api 1 09.06.2007 11:09