Как скопировать именованный диапазон из одной рабочей книги в другую рабочую книгу в определенной ячейке? - PullRequest
0 голосов
/ 02 января 2019

Ниже мой оригинальный код. Я пытаюсь изменить свой код так, чтобы добавление / удаление новых столбцов / строк не влияло на новую созданную книгу. Я решил использовать диапазон имен, чтобы избежать разрушения кода. (Я знаю, как создать новый диапазон в менеджере имен) Кто-нибудь знает, как настроить код?

Dim WS As Worksheet
Dim Rng As Range
Dim myWs As Worksheet
Set myWs = ThisWorkbook.Sheets("MASTER")
Set Rng1 = myWs.Range("A1:AJ4")
Set Rng2 = myWs.Range("A85:AJ104")
Application.Workbooks.Add
Set WS = Application.ActiveSheet
Rng1.Copy Destination:=WS.Range("A1:AJ4")
Rng2.Copy Destination:=WS.Range("A5:AJ50")

1 Ответ

0 голосов
/ 02 января 2019

Вам нужно затемнить каждую рабочую книгу и рабочую таблицу, которую вы будете использовать.

Dim wb1 as Workbook, wb2 as Workbook, ws1 as Worksheet, ws2 as Worksheet
Dim xrow as long, arrData() as variant

Set wb1 = Workbooks("Book1")
Set ws1 = wb1.Worksheets("Sheet1")

Set wb2 = Workbooks("Book2")
Set ws2 = wb2.Worksheets("Sheet2")

Обратите внимание, что это работает, только если у вас открыты обе рабочие книги.

Также я бы порекомендовал скопировать данныеиз каждой ячейки в массив, вместо копирования диапазона.Таким образом я получаю меньше ошибок.

ApplicationScreenUpdating = False

ws1.Activate

'where n is the number of rows you want to copy
for x = 1 To n
arrData[x - 1] = ws1.Cells(x, 1).value
next x

ws2.Activate

for i = 1 to n
ws2.Cells(i, 1).value = arrData[i - 1]
next i

ApplicationScreenUpdating = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...