2015-08-20 4 views
2

Я пытаюсь написать макрос, который проходит через все таблицы в книге, а затем добавляет имя каждой таблицы в виде «TableName [#All]» в массив ,VBA Как создать массив объектов ListObjects

См незавершенный код ниже

Sub NewShopPage() 
' 
' Macro that creates a duplicate sheet from a hidden template 
' searches for every table in the workbook and then adds them to the 
' PivotTableWizard. 
' 

Dim NewShop As Variant 
NewShop = InputBox("What Shop are you creating a new estimate sheet for? (example: Shop 18)") 

NewShop = Replace(NewShop, " ", "_") 

Sheets("CE_Template").Copy After:=Sheets("Project Estimator") 
ActiveSheet.Name = NewShop 


ActiveSheet.ListObjects(1).Name = NewShop 

Sheets("Project Estimator").Select 
ActiveSheet.ListObjects(1).Select 

Dim MyArray As Variant 

    'HELP NEEDED HERE: 
    'For each [Table] in [workbook] 
    ' Add TableName + "[#All]" to MyArray 
    'Next 

ActiveSheet.PivotTableWizard SourceType:=xlConsolidation, SourceData:=MyArray 


End Sub 

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

Я не уверен, что если делать это таким образом, каждый раз удаляется форматирование, которое имеет сводная таблица.

ответ

0

Ответ:

Dim MyArray() As String 
Dim ArraySize As Integer 
Dim ws As Worksheet 
Dim Tbl As ListObject 

ArraySize = 0 

ReDim MyArray(0 To 0) 

For Each ws In ActiveWorkbook.Worksheets 
    For Each Tbl In ws.ListObjects 
     ReDim Preserve MyArray(ArraySize) As String 
     MyArray(UBound(MyArray)) = Tbl.Name & "[#All]" 
     ArraySize = ArraySize + 1 
    Next Tbl 
Next ws 
0
Dim tbl As ListObject 
For Each tbl In ActiveSheet.ListObjects 
    'Do stuff to tbl here 
Next tbl 

Кроме того, я бы порекомендовал этот сайт, если вы будете много работать со столами. http://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables

+0

Спасибо, но «делать вещи здесь» часть действительно то, что мне нужно. Это не решает мой главный вопрос о том, как добавить каждую из этих таблиц в массив. –

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