Я написал это и работает по большей части ... для первого найденного файла. на втором файле, я получаю следующее сообщение об ошибке:.Импорт нескольких файлов с разделителями пространства в один лист Excel
«Информация не может быть вставлен, потому что область копирования и область пасты не имеют одинаковый размер и форму Попробуйте выполнить одно из следующих действий:
- Нажмите одну ячейку, а затем вставить.
- Выберите прямоугольник, который является того же размера и формы, а затем вставьте. "
Я не понимаю, что я делаю неправильно.
Предположим, что нужно пройти по каталогу и захватить все файлы .txt, которые есть, и импортировать их в Лист1 или Лист2. Я могу получить первый, чтобы импортировать отлично, но следующий файл выдает эту ошибку вместо добавления к той же электронной таблице.
Sub PopulateSheets()
Dim file As String, path As String, fullpath As String, StaticPath As String
Dim count As Integer
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet
Dim Sheet As String
Dim RowCount As Long
On Error GoTo Errorcatch
RowCount = 1
count = 1
StaticPath = Sheet3.Cells(2, 7)
While (count <= 2)
If count = 1 Then
path = StaticPath & "\com\*.txt"
Else
path = StaticPath & "\res\*.txt"
End If
file = Dir(path)
Sheet = "Sheet" & count
While (file <> "")
fullpath = Left(path, InStr(1, path, "*.txt") - 1) & file
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets(Sheet) '<~~ Sheet where I want to import
Set wbO = Workbooks.Open(fullpath)
RowCount = wsI.Range("A:A").CurrentRegion.Rows.count
wbO.Sheets(1).Cells.Copy Destination:=wsI.Range("A" & RowCount)
wbO.Close SaveChanges:=False
file = Dir 'Grab Next File
Wend
count = count + 1
Wend
Exit Sub
Errorcatch:
MsgBox Err.Description
End Sub
Он взрывается в wbO.Sheets(1).Cells.Copy Destination:=wsI.Range("A" & RowCount)
после того, как он вставил информацию из первого файла, закрыл его, а затем пытается вставить второй файл.
Любая помощь будет оценена на этом этапе.
Примечание стороны Я заметил, что если я поменять wbO.Sheets(1).Cells.Copy Destination:=wsI.Range("A" & RowCount)
с wbO.Sheets(1).Cells.Copy wsI.Cells
, он будет вставить все файлы в листе ... но он переписывает файл перед ним. Мне нужно, чтобы он добавлял и не знал, как это сделать.
Путь часть работает как чемпион на самом деле. Он захватывает все файлы, которые находятся в каталоге по мере необходимости. Проблема в том, что код vba отправляется на лист. Значение для пути - это что-то вроде «C: \ Comres». В зависимости от того, является ли это первым проходом или вторым проходом, я перехожу на C: \ comres \ com или \ res. Так что эта часть не проблема, она работает. – user2597159
Я вижу, что вы говорите, я ставлю переменную StaticPath, чтобы удерживать путь, который исправляет этого маленького парня, но это все еще не помогает этой проблеме, поскольку это то, как данные копируются в электронную таблицу, а не как она обращается к ней , – user2597159