Поделиться через


Метод Shapes.AddTable (Project)

Добавляет таблицу в отчет и возвращает объект Shape , представляющий таблицу.

Синтаксис

выражение. AddTable(NumRows,NumColumns,Left,Top,Width,Height)

выражение: переменная, представляющая объект Shapes.

Параметры

Имя Обязательный или необязательный Тип данных Описание
NumRows Обязательный Long Количество строк в таблице. NumRows игнорируется при создании таблицы.
NumColumns Обязательный Long Количество столбцов в таблице. NumColumns игнорируется при создании таблицы.
Left Обязательный Single Левый край (в точках) таблицы относительно левой части области отчета.
Top Обязательный Single Верхний край (в точках) таблицы относительно верхней части области отчета.
Width Обязательный Single Ширина таблицы в точках.
Height Обязательный Single Высота таблицы в пунктах.
NumRows Обязательный INT
NumColumns Обязательный INT
Left Обязательный FLOAT
Top Обязательный FLOAT
Width Обязательный FLOAT
Height Обязательный FLOAT
Имя Обязательный или необязательный Тип данных Описание

Возвращаемое значение

Shape

Замечания

Проект игнорирует NumRows и NumColumns , когда метод AddTable создает таблицу. При создании таблицы она содержит одну строку и один столбец, который содержит текст Использование области задач "Данные таблицы" для создания таблицы (см. рис. 1). При выборе таблицы в Project отображается область задач данных таблицы с именем Список полей с выбранными по умолчанию задачами TASKS . С помощью области задач Список полей можно вручную добавить поля в отчет.

Рис. 1. Метод AddTable создает таблицу с одной строкой и одним столбцом.

Использование метода AddTable

Пример

Макрос TestReportTable создает таблицу, показанную на рисунке 1, а затем выбирает таблицу для отображения области задач Данные таблицы.

Sub TestReportTable()
    Dim theReport As Report
    Dim tableShape As shape
    Dim theReportTable As ReportTable
    Dim reportName As String
    Dim tableName As String
    Dim rows As Integer
    Dim columns As Integer
    Dim left As Integer
    Dim top As Integer
    Dim width As Integer
    Dim height As Integer
    
    reportName = "Table Report"
    Set theReport = ActiveProject.Reports.Add(reportName)
    
     ' Add the table.
    tableName = "Task information"
    rows = 0
    columns = 0
    left = 0
    top = 30
    width = 110
    height = 20
       
    ' Project ignores the NumRows and NumColumns parameters when
    ' creating a ReportTable.
    Set tableShape = theReport.Shapes.AddTable(rows, columns, _
                        left, top, width, height)
    
    tableShape.Name = tableName
    tableShape.Select
    Set theReportTable = tableShape.Table
    
    With theReportTable
        Debug.Print "Rows: " & .RowsCount
        Debug.Print "Columns: " & .ColumnsCount
        Debug.Print "Cell 1,1 contents:" & vbCrLf & vbTab; .GetCellText(1, 1)
    End With
End Sub

Чтобы указать поля для таблицы, используйте метод UpdateTableData . Добавьте следующий код после Set theReportTable = tableShape.Table строки в предыдущем макросе. Параметр OutlineLevel задает задачи уровня 1 и отфильтровывает суммарную задачу проекта.

    ' Set fields for the table.
    Dim fieldArray(1 To 6) As PjField
        
    fieldArray(1) = pjTaskName
    fieldArray(2) = pjTaskStart
    fieldArray(3) = pjTaskFinish
    fieldArray(4) = pjTaskPercentComplete
    fieldArray(5) = pjTaskActualCost
    fieldArray(6) = pjTaskRemainingCost
        
    theReportTable.UpdateTableData Task:=True, OutlineLevel:=1, SafeArrayOfPjField:=fieldArray

Запустите измененный макрос TestReportTable в проекте с четырьмя задачами с различными значениями для процента завершения и затрат на ресурсы. На рисунке 2 показан пример результатов таблицы.

Рис. 2. Метод UpdateTableData может добавлять поля в таблицу

Обновление таблицы с помощью метода UpdateTableData

См. также

Объект фигуры фигуры, методApplication.Table

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.