2016-03-23 5 views
0

Целью моего макроса является большой набор данных, разделяющий данные на отдельные книги для каждого продукта. После того, как я вставляю только конкретные данные в файл, я хочу скопировать 5 отдельных рабочих листов из книги со всеми данными, каждый рабочий лист с сводной таблицей на них, установить данные в сводной таблице на данные на странице распространения что я скопировал ранее. Затем обновите сводные таблицы.Связывание массива рабочих листов с определенной книгой

Мой самый главный вопрос в том, как я называю массив рабочих листов в рабочей книге

Dim cell As Range, DataRng As Range 
Dim curPath As String, curWB As String, newWB 
Dim ArrayCM As Variant 
Dim InxW As Long 
Dim xTable As PivotTable 

curPath = ActiveWorkbook.Path & "\" 
curWB = ActiveWorkbook.Name 
'Array of worksheets to be copied over for Company Manger 
Set ArrayCM = curWB.Sheets(Array("CM YTD", "CM MTD", "CM Refurb", "TBM Local", "PSM")) 
--This Gives me an error 

Потому что я собираюсь создать несколько книг, я хочу, чтобы определить мой массив, чтобы скопировать из главного файла в новый файл. Помощь по этому вопросу будет весьма признательна.

+0

Вы вводите в заблуждение *** String *** и *** Workbook *** объект. 'Set ArrayCM = Activeworkbook.Sheets (Array (« CM YTD »,« CM MTD »,« CM Refurb »,« TBM Local »,« PSM »))' –

+0

'Рабочие книги (curWB)' не только 'curWB' – Rory

+0

I «Я пробовал оба из них и не работал. Я хочу определить «Родительскую книгу», чтобы я мог копировать рабочие листы в книги для детей. – Bruce

ответ

0

Вы можете создать тип листа var в качестве массива, переустановить его и присвоить каждому элементу массива значение Worksheet Object.

Sub manyWSs() 
    Dim w As Long 
    Dim cwb As Workbook 
    Dim wss() As Worksheet 

    Set cwb = ThisWorkbook 

    With cwb.Worksheets(Array("Sheet1", "Sheet3", "Sheet5")) 
     ReDim wss(1 To .Count) 
     For w = 1 To .Count 
      Debug.Print .Item(w).Name 
      Set wss(w) = .Item(w) 
     Next w 
    End With 

    For w = LBound(wss) To UBound(wss) 
     Debug.Print wss(w).Cells(1, 1).Address(0, 0, external:=True) 
    Next w 
End Sub 

Worksheets(Array("Sheet1", "Sheet3", "Sheet5")) не является истинным Worksheets collection так .Item(w) используется, чтобы выбрать куски. После того, как каждая часть была Set, все свойства, методы и члены одного Worksheet Object доступны для каждой части массива с полной родительской ассоциацией Workbook object.

+0

Это приводит к ошибке при каждом запуске 'With cwb.Worksheets (Array (« Sheet1 »,« Sheet3 »,« Sheet5 »))« Единственное, что я изменил, это имя для таблиц, которые я хочу в массиве. Я бы назвал этот массив как «wss» правильным? – Bruce

Смежные вопросы