Я пытаюсь написать код, который будет циклически проходить через серию именованных рабочих листов, в каждом рабочем листе отдельные непрерывные ячейки должны быть скопированы в один двумерный массив, где каждый рабочий лист находится в отдельной строке.Затем я хотел бы вставить массив в другую рабочую книгу.
У меня есть некоторые данные, которые разбросаны по нескольким рабочим листам.Данные находятся в одинаковых ячейках на каждом листе.Я хотел бы скопировать данные в другую рабочую книгу с данными из каждого рабочего листа в разных строках.
Мой код показан ниже:
Sub CommandButton1_Click()
Dim fd As Office.FileDialog
Dim bb As Workbook
Dim cs As Worksheet
Dim bb As Workbook
Dim cs As Worksheet
Dim nextrow As Long
Dim compiledvalues(11, 7) As Variant
Dim openbook As Variant
Dim sheetname As Variant
Dim i As Long
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Title = "Select Buildbook"
.Filters.Add "Excel Files", "*.xlsm", 1 'only show macro-enabled excel docs
.AllowMultiSelect = False 'don't allow multiple files to be selected
.InitialFileName = "\C:Users\hsa\shared\"
.Show 'show dialog box
bbpath = .SelectedItems(1)
End With
Application.DisplayAlerts = False
Set bb = Workbooks.Open(bbpath, True, True)
openbook = Array ("Jan", "Feb", March, "April", "May","June","July", "August", "September", "October", "December")
i=0
For Each sheetname In openbook
compiledvalues(i, 0) = ActiveSheet.Range("B26")
compiledvalues(i, 1) = ActiveSheet.Range("C16")
compiledvalues(i, 2) = ActiveSheet.Range("C15")
compiledvalues(i, 3) = ActiveSheet.Range("D15")
compiledvalues(i, 4) = ActiveSheet.Range("E36")
compiledvalues(i, 5) = ActiveSheet.Range("F37")
compiledvalues(i, 6) = ActiveSheet.Range("G16")
compiledvalues(i, 7) = ActiveSheet.Range("G15")
i = i + 1
Next sheetname
ThisWorkbook.Activate
nextrow = ThisWorkbook.Sheets("Compiled Data").Range("C3:C").Find(What:="*", After:=Range("A1"), SearchORder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
Worksheets("Compiled Data").Activate
ActiveSheet.Range(Cells(nextrow, 3), Cells(nextrow + 11, 10)) = compiledvalues
bb.close
End Sub