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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2017, 10:42   #1
Ирина3434
Новичок
Джуниор
 
Регистрация: 27.09.2017
Сообщений: 1
По умолчанию Свод нескольких файлов Excel в один

Добрый день!
Возникла проблема, с которой мне уже Ваш форум помог, в особенности пользователь EducatedFool. (http://www.programmersforum.ru/showthread.php?t=39712)
Нашла макрос, который соединяет данные из разных файлов в папке в одну сводную. Прекрасно, макрос работает. Но, если у меня в файлах стоят формулы, а не значения, то он соединяет данные некорректно, идет смещение строчек, а соответственно и формул.
Как преобразовать макрос, чтобы он брал не формулы из файлов в папке, а значения этих формул?

Код:
Sub ОчисткаСводнойТаблицы()
    Application.ScreenUpdating = False
    Me.Range("5:5000").ClearContents
    Me.Range("5:500").EntireRow.AutoFit
End Sub

Sub ЗаполнениеСводнойТаблицы()
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    
    Dim coll As New Collection, wb As Workbook, sh As Worksheet, newRow As Range
    Mask = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "*.xls")
    
    Filename = Dir(Mask)
    While Filename <> ""    ' перебираем все файлы в текущей папке
        If Not Filename Like ThisWorkbook.Name & "*" Then coll.Add Filename
        Filename = Dir
    Wend

    On Error Resume Next
    For Each Item In coll
        Set wb = Workbooks.Open(Replace(ThisWorkbook.FullName, ThisWorkbook.Name, Item), , True)
        If Not wb Is Nothing Then
            Set sh = wb.Worksheets(1)
            LastRow = sh.Range("a65000").End(xlUp).Row
            If LastRow > 4 Then    ' если есть заполненные строки
                For i = 5 To LastRow
                    Set newRow = Me.Range("a65000").End(xlUp).Offset(1)
                    sh.Rows(i).Copy newRow
                    newRow.EntireRow.AutoFit
                Next i
            End If
            wb.Close False
        End If
    Next
    Application.DisplayAlerts = True
End Sub
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор



Буду очень благодарна за помощь!

Последний раз редактировалось Serge_Bliznykov; 27.09.2017 в 11:21.
Ирина3434 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свод нескольких файлов Excel в один 2 AnnaVild Microsoft Office Excel 12 25.11.2016 13:03
Свод нескольких файлов Excel в один kazakh222 Microsoft Office Excel 6 20.09.2015 09:37
Свод из 2-х Excel в один neklrc Помощь студентам 2 29.06.2012 10:11
Cуммировать нескольких файлов Excel в один cassiopeya Microsoft Office Excel 9 01.11.2011 22:29
Свод нескольких файлов Excel в один Стасон Microsoft Office Excel 2 24.02.2009 11:13