Я хочу иметь возможность вставлять данные из закрытой книги (x) в Именованный диапазон («YearlyData») моей активной книги (y). Этот диапазон находится в листе, называемом «Destination».Вставка скопированного диапазона (из закрытой книги) в именованный диапазон открытой книги
Однако, именованный диапазон «YearlyData» имеет заголовок строку (а именно строка 1 диапазон) и начинаются фактические «сырые» данные из Row 2.
То, что я хочу сделать, это сдвинуть вниз содержимое из строки 2 далее на точное количество строк, которые должны быть вставлены из рабочей рабочей области (x).
Вот то, что я до сих пор:
Option Explicit
Sub DataFromClosedFile()
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim x As Workbook
Dim y As Workbook
Dim CA_TotalRows As Integer
Dim CA_Count As Integer
х является закрытым, источником рабочей книги у является текущей активной рабочей книги, в которую я буду вставлять данные
Set y = ThisWorkbook 'ActiveWorkbook
Set x = Workbooks.Open("PATH", True, True)
Это именованные диапазон, в который я хочу скопировать данные
Dim YearlyData As Range
Set YearlyData = y.Worksheets("Destination").Range("YearlyData")
Затем подсчитайте количество строк, которые необходимо скопированы:
CA_TotalRows = x.Worksheets("August_2015_CA").UsedRange.Rows.Count
И ЗДЕСЬ, где мне нужно изменить код.
Мне нужно вставить правильное количество строк между строками 1 и 2 именованного диапазона «YearlyData», а затем мне нужно вставить данные в эти строки из закрытой книги.
В дополнение к этому, я хочу только скопировать столбцы A: B и E: H из исходной базы данных.
Я прочитал сообщения, в которых пользователи предлагают использовать «.Insert Shift: = xlDown», но мне не удалось заставить его работать.
Итак, мой старый код, используя «Sheet3», вместо «Destination», который работает, но, очевидно, не копирует его в названный диапазон «YearlyData», который я действительно хочу сделать.
Обратите внимание, что я начинаю копировать данные из строки 2 исходной книги (x), потому что я не хочу копировать названия, а только необработанные данные.
y.Worksheets("Sheet3").Range("A1:B" & CA_TotalRows - 1).Formula = x.Worksheets("August_2015_CA").Range("A2:B" & CA_TotalRows).Formula
y.Worksheets("Sheet3").Range("C1:F" & CA_TotalRows - 1).Formula = x.Worksheets("August_2015_CA").Range("E2:H" & CA_TotalRows).Formula
Любые предложения будут высоко оценены!
x.Close False
Set x = Nothing
Application.Calculation = xlCalculationAutomatic
ErrHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Это тот же вопрос, что и [этот] (https://stackoverflow.com/questions/32407103/)? – BruceWayne
Нет, это не так. В другом я создавал код для вставки данных в Sheet3, теперь я хочу идти дальше и вставлять его внутри диапазона (между существующей строкой 1 и строкой 2). Другими словами, я хочу 1. Добавьте необходимое количество строк внутри диапазона, а затем 2. вставьте данные (чтобы избежать перезаписи). –