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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2011, 17:09   #11
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Замените свой файл ОТЧЁТ этим файлом:



Отчёт сделал немного не в том виде, как вы просили, но так будет удобнее обрабатывать данные.
При желании можно переделать, чтобы для каждой даты создавался отдельный лист.

Код:
Sub ЗаполнениеОтчёта()
    Dim coll As Collection, ПутьКПапке As String
    ПутьКПапке = ThisWorkbook.Path & "\Детализация\"

    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке, ".xls", 3)

    Application.ScreenUpdating = False    ' отключаем обновление экрана

    Dim wb As Workbook, sh As Worksheet, ra As Range, cell As Range

    ' выводим результаты на лист
     On Error Resume Next
    For i = 1 To coll.Count    ' перебираем все элементы коллекции, содержащей пути к файлам

        Application.StatusBar = "Обрабатывается файл " & Dir(coll(i))
        Set wb = Workbooks.Open(coll(i))    ' открываем очередной файл
        Set sh = wb.Worksheets(1)    ' берем первый лист
        ' 5 ячеек справа от слова ИТОГО
        Set ra = sh.Range("a:a").Find("итого", , xlValues, xlPart).Next.Resize(, 5)

        ' очередная строка для вставки (первая её ячейка)
        Set cell = shd.Range("a" & shd.Rows.Count).End(xlUp).Offset(1)

        cell = sh.Cells(1)    ' в первую ячейку новой строки  - дата из первой ячейки листа
        cell.Next = sh.Range("a2")    ' фамилия
        cell.Next.Next.Resize(, 5).Value = ra.Value   ' суммы

        DoEvents    ' временно передаём управление ОС
        wb.Close False    ' закрываем файл без сохранение изменений
    Next
    shd.Range("a:g").EntireColumn.AutoFit    ' автоподбор ширины столбцов

    Application.StatusBar = False
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 16.07.2011, 17:22   #12
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Сделал вам и то, что вы просили (отчёт за каждый день - на новом листе)

Поместите этот файл в ту же папку, где и ваш файл ОТЧЁТ:
http://excelvba.ru/XL_Files/Sample__...__19-22-26.zip

(лист ШАБЛОН не удаляйте. А изменять этот лист можно)
EducatedFool вне форума Ответить с цитированием
Старый 16.07.2011, 20:38   #13
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

изменять данные в файлах можно даже не открывая , но конечно есть свои тонкости , маленький пример с подписями столбцов
подписи столбцов F1,F2,F3

ADO должна быть подключена в references, работает быстрее чем открыть файл, вставить и закрыть

Код:
Sub Add_Value_Close_file()
Dim Fl$, strSqlADD$
Fl = "D:\BD.xls"
Dim cn As ADODB.Connection
Dim sCon As String
Set cn = New ADODB.Connection
sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fl _
& ";Extended Properties=""Excel 12.0;HDR=Yes"";"
cn.Open sCon
If Not cn.State = 1 Then Exit Sub
 strSqlADD = "INSERT INTO [Лист1$A1:C65535] (F1,F2,F3) SELECT 10,20,30"
    'For i = 1 To 5
    cn.Execute strSqlADD
    'Next
cn.Close
Set cn = Nothing
End Sub
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 16.07.2011 в 21:00.
R Dmitry вне форума Ответить с цитированием
Старый 18.07.2011, 19:32   #14
united11
 
Регистрация: 14.07.2011
Сообщений: 6
По умолчанию

Спасибо огромнейшее!!!
Посоветуйте на последок, пожалуйста, книжки какие глянуть, чтобы лучше разобраться в VBA самой?
united11 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открыть файлы в папке по очерёдно Mrbober Общие вопросы C/C++ 21 26.02.2011 23:16
Открытие всех файлов xls в папке Milo4ka_Lucy Microsoft Office Excel 17 28.09.2010 14:50
Как найти все открытые „xls“ файлы? roplius Microsoft Office Excel 2 03.02.2010 09:55
Как найти все файлы в папке? blackstersl Общие вопросы Delphi 3 24.06.2009 16:52
Как проверить наличие в конкретной папке DLL, а потом на вход каждой подать массив байт,и на выходе тоже. Sanches_Ramires Общие вопросы .NET 1 02.02.2009 15:02