Excel 2010 VBA: консолидация данных из таблиц в закрытых книгах: копирование / вставка или массив? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть макрос для объединения данных из 2 разных таблиц в 14 разных книгах, tblstaff и tblwage. В настоящее время код работает следующим образом:

  • Открытый исходный код WB
  • копировать ListObject.DataBodyRange из каждого
  • PasteSpecial (xlvalues) в консолидированный ListObject.DataBodyRange
  • Близкий источник WB
  • Следующий источник WB

Мой вопрос: Это самый эффективный способ сделать это? Я не очень знаком с массивами в VBA, но мне было интересно, смогу ли я сделать то же самое, создав два двухмерных массива (персонал и зарплата) и считав каждую таблицу в них, вставив окончательный / консолидированный массив в конце цикла. Заранее спасибо!

Редактировать: Предполагая, что массивы здесь более эффективны, как мне создать и переопределить 2d массив, считывая каждую новую таблицу в него? Вероятно, можно с уверенностью сказать, что есть ошибки с ниже:

Set MarRange = WBMaster.Sheets("Dashboard").Range("marcirc,mar8a")
arraysize = 0
ReDim myArray(0 To 0)

For Each MarCell In MarRange

marfile = WBMaster.Sheets("Dashboard").Range("mardir").Value & MarCell.Value
Application.StatusBar = "Importing data from " & marfile
Workbooks.Open marfile, True, True
Set WBMar = ActiveWorkbook

ReDim Preserve myArray(arraysize) As Variant
myArray = WBMar.Sheets("Staffing Details").ListObjects(1).DataBodyRange.Value
arraysize = arraysize + 1

Next MarCell
End Sub
...