Долгое время читатель и поклонник StackOverflow.VBA - копирование и вставка из нескольких файлов Excel в один файл Excel
В основном я пытаюсь выполнить цикл файлов Excel, чтобы скопировать ряд данных и вставить их в одну книгу/лист Excel.
Не всегда согласовано расположение диапазона ячеек (C3: D8, D3: E8), но размеры таблицы: 29 R x 2 C. Кроме того, файлы имеют только 1 лист, и кроме указанных размеров таблицы , никаких значений данных в других ячейках.
В текущей форме код выполняет, но не вставляет ничего в его целевой файл Excel.
мне это нужно, чтобы
- Найти размерность данных в файл (таблица)
- Скопируйте таблицу
- Вставить в пункт назначения (ниже предыдущей таблицы)
- Loop через к следующему файлу
- Повторите шаг 1-4
Код от:
Большое спасибо за любую помощь, я очень ценю это и, пожалуйста, скажите мне указать что-либо, если мой вопрос неясен.
Sub SourcetoDest()
Dim wbDest As Workbook
Dim wbSource As Workbook
Dim sDestPath As String
Dim sSourcePath As String
Dim shDest As Worksheet
Dim rDest As Range
Dim vaFiles As Variant
Dim i As Long
'array of folder names under sDestPath
'array of file names under vaFiles
vaFiles = Array("Book1.xls")
sDestPath = "C:\Users"
sSourcePath = "C:\Users"
Set wbDest = Workbooks.Open(sDestPath & "\" & "Book2.xlsm")
Set shDest = wbDest.Sheets(1)
'loop through the files
For i = LBound(vaFiles) To UBound(vaFiles)
'open the source
Set wbSource = Workbooks.Open(sSourcePath & "\" & vaFiles(i))
'find the next cell in col C
Set rDest = shDest.Cells(shDest.Rows.Count, 3).End(xlUp).Offset(1, 0)
'write the values from source into destination
rDest.Resize(5, 1).Value = wbSource.Sheets(1).Range("C7:D33").Value
wbSource.Close False
Next i
End Sub
Ваш код выглядит просто отлично, пытаетесь ли вы пройти через него в режиме breakmode? Вам нужна только часть размера вашего исходного диапазона данных, но с ней вы не можете справиться (поскольку вы уже знаете функцию 'End()'). Но я не понимаю, почему у вас не будет никаких данных в листе адресата ... – R3uK
Если вы попробуете 'wbSource.Sheets (1) .Range (« C7: D33 »). Выберите' непосредственно перед 'rDest. Resize (5, 1) .Value = wbSource.Sheets (1) .Range («C7: D33»). Значение 'строка, оно выделит исходные данные. Пройдите свой код с помощью F8 и убедитесь, что ваш исходный диапазон правильный. Затем попробуйте 'rDest.Resize (5, 1). Выберите« Проверить диапазон назначения ». Как только они верны, вы можете удалить обе строки, когда закончите отладку. – tonester640
Спасибо, смешно, когда прокручиваем код с помощью F8, и он попадает в линию. Установите wbDest = Workbooks.Open (sDestPath & "\" и "Book2.xlsm"), файл excel Book2 открывается, а затем код просто останавливается ? –