ЗАДАЧА: лучший код: копирование рабочих книг - несколько листов, одинаковые диапазоны, но значения данных, которые отличаются от рабочего листа к рабочему листу - PullRequest
0 голосов
/ 27 июня 2019

У меня есть две книги, состоящие из нескольких листов, каждая из которых содержит данные, которые отличаются от листа к листу, в диапазоне (B7:P100).Мне нужно скопировать данные из диапазона каждой рабочей таблицы в соответствующую рабочую таблицу и из другой рабочей книги.

Следующий код выполняет это: однако, мне кажется, существует более элегантный способ выполнениятот же результат.Я постепенно становлюсь опытным в методе грубой силы и невежества программирования VBA, но хотел бы лучше понять VBA.Я пытался работать с трехмерным массивом диапазонов;но очевидно, что я не совсем понимаю сложные массивы.

Следующий код сокращен для экономии места.(Существует 18 рабочих листов, которые необходимо скопировать)

Можете ли вы предложить более элегантный или более эффективный подход (или подходы) к выполнению задачи?Буду признателен за ваши комментарии.


Workbooks("Nutrition  Update.xlsm").Worksheets("Breakfast").Range("B7:P100").Value = _
Workbooks("Nutrition.xlsm").Worksheets("Breakfast").Range("B7:P100").Value

Workbooks("Nutrition Update.xlsm").Worksheets("Lunch").Range("B7:P100").Value = _
Workbooks("Nutrition.xlsm").Worksheets("Lunch").Range("B7:P100").Value

Workbooks("Nutrition Update.xlsm").Worksheets("Dinner").Range("B7:P100").Value = _
Workbooks("Nutrition.xlsm").Worksheets("Dinner").Range("B7:P100").Value

1 Ответ

1 голос
/ 27 июня 2019
Sub CopyStuff
Dim wbSource as Workbook
Dim wbTarget as Workbook
set wbsource = workbooks("Nutrition  Update.xlsm")
set wbtarget = workbooks("Nutrition.xlsm")
dim ws as worksheet 
for each ws in wbsource.worksheets  'loop through every sheet
  wbtarget(ws.name).range("B7:P100") = ws.range("b7:p100").value 'copy to same name in target
next ws
end sub
...