У меня есть список файлов:
Они имеют один общий формат, имеют только один лист, но могут иметь несколько строк с данными.Они должны быть открыты, все ячейки с данными скопированы, а затем вставлены в лист с названием Адреса.Вот так:
Однако я получаю следующее:
Теперь явмешались и заметили, что мои другие данные помещаются в пункт назначения, они просто перезаписываются (что выглядит случайным образом).Вот код, который я использовал:
Option Explicit
Sub AddressListing()
Dim Cell As Range
With Worksheets("ghgh")
For Each Cell In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).Cells
If Len(Dir(Cell.Value)) Then
With Workbooks.Open(Cell.Value)
Range("A2:X" & Cells(Rows.Count, "D").End(xlUp).Row).copy _
ThisWorkbook.Worksheets("Addresses").Cells(Rows.Count, "A").End(xlUp).Offset(1)
.Close SaveChanges:=False
End With
Else
MsgBox "File not found: " & Cell.Value
End If
Next Cell
End With
'Call RemoveViaFilter
End Sub
Чтобы бороться с этим и не тратить время каждого, я создал переменную NextRow, чтобы найти следующую пустую строку в книге.Это все еще не сработало.Я не получаю сообщение об ошибке, данные просто вводятся одинаково.Вот код с NextRow:
Option Explicit
Sub AddressListing2()
Dim Cell As Range
Dim NextRow As Long
NextRow = ThisWorkbook.Sheets("Addresses").Range("D" & Rows.Count).End(xlUp).Row + 1
With Worksheets("ghgh")
For Each Cell In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).Cells
If Len(Dir(Cell.Value)) Then
With Workbooks.Open(Cell.Value)
Range("A2:X" & Cells(Rows.Count, "D").End(xlUp).Row).copy _
ThisWorkbook.Worksheets("Addresses").Range("A" & NextRow)
.Close SaveChanges:=False
End With
Else
MsgBox "File not found: " & Cell.Value
End If
Next Cell
End With
'Call RemoveViaFilter
End Sub
Я никогда не сталкивался с ошибками такого типа с NextRow.Я знаю, что «Найти следующую пустую строку и поместить туда данные» - это распространенный вопрос, поэтому я подумал, что NextRow решит эту проблему.Однако данные все еще перезаписываются, и я не сталкивался с какими-либо вопросами, которые касаются этого.
Я не хочу определенных диапазонов (например, A2: J100) и намеренно их избегаю потому что длина моих списков постоянно меняется.Это касается строк, которые я хочу вставить, и строк путей к файлам.
Любая помощь очень ценится, я уже несколько раз использовал «найти пустую строку» без проблем и не знаюпочему это перезаписывает данные.Это кажется противоположным всему процессу поиска пустой строки.