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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2013, 17:35   #1
Алабор
Пользователь
 
Регистрация: 14.03.2011
Сообщений: 17
По умолчанию про объединение файлов

задача: объединить файлы одинаковой структуры. Данные только на первых листах. Полученный результат сохранить в новой книге.
Вопрос: как исправить ошибку в коде?

Код:
Sub Consolidated_Range()

    Dim Sheet
    Dim iRngAddress As String, oAwb As String, DataSheet As String, _
        iCopyAddress As String, sSheetName As String, oFile
    Dim lLastrow As Long, lLastRowMyBook As Long
    Dim iLastColumn As Integer
    Dim Str() As String

    SampleFileKladovay = Application.GetOpenFilename(, , "Выберите таблицу образец") 'вывод диалогового окна для таблицы-образца
    If SampleFileKladovay = False Then
    Main_Form.Show 'если ничего не выбрано отображаем форму и
    End If '  - стоп
    DataSheet = ThisWorkbook.ActiveSheet.Name
    With Application.FileDialog(msoFileDialogFilePicker) 'открываем диалог выбора файлов
        .AllowMultiSelect = True 'разрешаем мультивыбор
        .InitialFileName = "*.*" 'фильтр на файлы
        .Title = "Выберите файлы"
        If .Show = False Then Exit Sub 'если ничего не выбрано - конец
        For Each oFile In .SelectedItems 'открытие цикла по выбранным файлам
            Workbooks.OpenText Filename:=oFile ' ?почему открытие как txt файла?
            oAwb = Dir(oFile, vbDirectory)
            'Application.ScreenUpdating = False
            Workbooks(oAwb).Activate
                        lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
                        iLastColumn = Cells.SpecialCells(xlLastCell).Column
                        iCopyAddress = Range(Cells(4, 1), Cells(lLastrow, iLastColumn)).Address
                    lLastRowMyBook = ThisWorkbook.Sheets(DataSheet).Cells.SpecialCells(xlLastCell).Row + 1
                    iRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
                    Stop
                    Sheet.Range(iCopyAddress).Copy Destination:=SampleFileKladovay.Sheets("List1").Range(iRngAddress)
            Workbooks(oAwb).Close False
        Next oFile
    End With
    Application.ScreenUpdating = True
End Sub
как я понимаю, ошибка в этой строке:
Destination:=SampleFileKladovay.She ets("List1").Range(iRngAddress)

Благодарю за ответы
Алабор вне форума Ответить с цитированием
Старый 22.01.2013, 18:58   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Как минимум этой самой Sheet значение не присвоено. У Вас цикл по файлам, но не по листам. Чтобы копировать из первого листа:
Код:
Sheets(1).Range(iCopyAddress).Copy Destination:=SampleFileKladovay.Sheets("List1").Range(iRngAddress)
А вообще можете здесь посмотреть более объемную и усовершенствованную версию этого кода:
Как собрать данные с нескольких листов или книг?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
и снова про объединение таблиц Evgeny_Pa Microsoft Office Excel 8 14.12.2012 11:40
объединение файлов Lingvist87 Microsoft Office Excel 0 18.09.2012 14:16
Объединение файлов Gortesun Microsoft Office Excel 0 17.11.2011 21:52
Объединение файлов Sparky Помощь студентам 0 04.06.2010 16:26
Объединение файлов Aleksey1989 Помощь студентам 3 25.04.2010 19:35