Скопируйте данные из нескольких файлов в один лист с инкрементными строками.

Я использую следующий код, чтобы открыть один из нескольких файлов, скопировать строку из рабочего листа и вставить его обратно в первый лист, а затем закрыть открытый файл.

Моя проблема в том, что я не могу пройти мимо функции, чтобы перемещаться по строкам каждый раз, когда она вставляет. Я хочу, чтобы он постепенно вставлял значения в новую строку, т. Е. B3 , затем B4 , затем B5 и т. Д.

 Sub Auto_open_change() Dim WrkBook As Workbook Dim StrFileName As String Dim FileLocnStr As String Dim LAARNmeWrkbk As String PERNmeWrkbk = ThisWorkbook.Name FileLocnStr = "T:\Projects\data" 'ThisWorkbook.Path Dim StrFile As String StrFile = Dir(FileLocnStr & "\*.xls") Do While Len(StrFile) > 0 DoStuff (FileLocnStr & "\" & StrFile) StrFile = Dir Loop End Sub Private Sub DoStuff(StrFileName) Workbooks.Open (StrFileName) Call Edit Workbooks.Open (StrFileName) ActiveWorkbook.Close End Sub Sub Edit() Dim Wb1 As Workbook Dim ws1 As Worksheet Dim loopcal As Long With Application .ScreenUpdating = False .EnableEvents = False lngCalc = .Calculation End With Set Wb1 = ActiveWorkbook Sheets("1_3 Octave1 CH1").Select Range("A3:AH3").Select Selection.Copy Windows("template.xlsm").Activate Sheets("Data Extract").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Вы можете попробовать следующее:

 Sub GetData(Fname as String) Dim wb1, wb2 as Workbook Dim ws1, ws2 as Worksheet Dim lrow as Long Set wb1 = Thisworkbook Set ws1 = wb1.Sheets("DataExtract") Set wb2 = Worbooks.Open(Fname) Set ws2 = wb2.Sheets("1_3 Octave1 CH1") With ws1 lrow = .Range("B" & Rows.Count).End(xlUp).Row ws2.Range("A3:AH3").Copy .Range("B" & lrow).Offset(1,0).PasteSpecial xlPasteValues Application.CutCopyMode = False End With wb2.Close False End Sub 

Просто замените DoStuff и Edit subs.
надеюсь это поможет.

Непроверенные:

 Sub Auto_open_change() Dim StrFileName As String Dim FileLocnStr As String Dim fNum As Long Dim StrFile As String FileLocnStr = "T:\Projects\data" 'ThisWorkbook.Path With Application .ScreenUpdating = False .EnableEvents = False End With fNum = 1 StrFile = Dir(FileLocnStr & "\*.xls") Do While Len(StrFile) > 0 CopyData FileLocnStr & "\" & StrFile, fNum StrFile = Dir fNum = fNum + 1 Loop With Application .ScreenUpdating = True .EnableEvents = True End With End Sub Sub CopyData(StrFileName As String, fNum As Long) Dim Wb1 As Workbook, rngCopy As Range Dim rngDest As Range Set Wb1 = Workbooks.Open(StrFileName) Set rngCopy = Wb1.Sheets("1_3 Octave1 CH1").Range("A3:AH3") Set rngDest = ThisWorkbook.Sheets("Data Extract") _ .Range("B2").Offset(fNum, 0) rngCopy.Copy rngDest With rngDest.Resize(rngCopy.Rows.Count, rngCopy.Columns.Count) .Value = .Value End With Wb1.Close False End Sub 

Ну, с помощью кода, который вы используете, вы можете просто создать переменную в Lo While Loop, которая вызывает DoStuff и передать ее в подменю Edit, а затем постройте диапазон из этого.

Итак, в цикле Do While

 rowcounter = 3 Do While Len(StrFile) > 0 DoStuff (FileLocnStr & "\" & StrFile, rowcounter) StrFile = Dir rowcounter = rowcounter + 1 Loop 

Затем измените DoStuff

 Private Sub DoStuff(StrFileName As String, rowcounter As Integer) Workbooks.Open (StrFileName) Call Edit(rowcounter) Workbooks.Open (StrFileName) ActiveWorkbook.Close End Sub 

Затем измените Edit

 Sub Edit(rowcounter As Integer) . . . . Windows("template.xlsm").Activate Sheets("Data Extract").Select Range("B" & rowcounter).Select . . End Sub 

«Ребята, вот окончательное редактирование. отлично работает, спасибо за помощь и поддержку ребятам.

 Option Explicit Sub Auto_open_change() Dim WrkBook As Workbook Dim StrFileName As String Dim FileLocnStr As String Dim LAARNmeWrkbk As String Dim rowcounter As Integer FileLocnStr = "T:\Projects\data" 'ThisWorkbook.Path Dim StrFile As String StrFile = Dir(FileLocnStr & "\*.xls") rowcounter = 3 Do While Len(StrFile) > 0 Call DoStuff(FileLocnStr & "\" & StrFile, rowcounter) StrFile = Dir rowcounter = rowcounter + 1 Loop End Sub Private Sub DoStuff(StrFileName As String, rowcounter As Integer) Workbooks.Open (StrFileName) Call Edit(rowcounter) Workbooks.Open (StrFileName) ActiveWorkbook.Close End Sub Sub Edit(rowcounter As Integer) Dim Wb1 As Workbook Dim ws1 As Worksheet Dim loopcal As Long With Application .ScreenUpdating = True .EnableEvents = True lngCalc = .Calculation End With Set Wb1 = ActiveWorkbook Sheets("1_3 Octave1 CH1").Select Range("A3:AH3").Select Selection.Copy Windows("template.xlsm").Activate Sheets("Data Extract").Select Range("B" & rowcounter).Select 'index the variable to ensure the cell reference changes each time. Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 
  • Скопировать вставку Графики Excel VBA
  • Вычислять, копировать и вставлять в заданное значение в VBA
  • Excel VBA Macro - копирование ячеек и вставка значений в активный диапазон ячеек
  • Скопируйте таблицу с веб-страницы и вставьте ее в Excel с помощью сопоставления назначения с помощью vba
  • VBA Cells.select скопировать пасту, не принося изображения последовательно
  • Перебирайте диапазон и копируйте содержимое ячейки на другой рабочий лист, каждый раз компенсируя
  • Excel VBA - Копирование и вставка частичного форматирования
  • Перемещение строк на другой лист, если они соответствуют критериям
  • Вставка буфера обмена в новую рабочую книгу VBA Macro
  • Скопируйте ячейку J1 из нескольких файлов и вставьте в столбец мастер-файла
  • копировать, вставлять выбор по нескольким критериям на другой рабочий лист в VBA
  • Interesting Posts

    ColdFusion – Open с выходом Excel

    Выгрузка формы в Excel VBA, похоже, не работает

    Excel – DSUM с критериями в столбце

    Обновления данных Excel работают по-разному с тем же кодом

    Excel: удалить дубликаты в зависимости от времени

    Как проверить конкретный текст независимо от шрифта текста в excel VBA

    Python gamma.fit возвращает значения, которые, похоже, не дают правильного распределения в excel

    Разбивается ли COM в XE2 и как я могу его обойти?

    Пользовательская форма не работает должным образом

    Можно ли скрыть значок на ленте для определенных пользователей?

    Элементы ячейки форматирования Excel сводной таблицы

    VBA: удалите одну строку, если значения соответствуют

    VB Macro, чтобы создавать новые книги и готовить новые книги из мастер-листа

    Есть ли функция, которую я могу использовать для получения уравнения для линии тренда?

    Список содержимого выделенных ячеек на отдельных листах

    Давайте будем гением компьютера.