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


Объект ReportTable (Project)

Представляет фигуру в виде таблицы в отчете Project.

Замечания

Примечание.

Запись макроса для объекта ReportTable не реализована. То есть, когда вы записываете макрос в Project и вручную добавляете таблицу отчета или редактируете элементы таблицы, шаги по добавлению таблицы отчета и управлению ими не записываются.

Объект ReportTable является своего рода объектом Shape ; он не связан с объектом Table . Project имеет ограниченную поддержку VBA для таблиц отчетов; Чтобы указать поля таблицы, вручную используйте область задач Список полей (см. рис. 1). Чтобы отобразить или скрыть область задач "Список полей ", выберите команду Данные таблицы на вкладке КОНСТРУКТОР в разделе РАБОТА С ТАБЛИЦАми на ленте. Чтобы указать макет таблицы или свойства конструктора, можно использовать вкладку КОНСТРУКТОР и вкладку МАКЕТ на ленте.

Запрос данных, связанный с таблицей отчета, можно обновить с помощью метода UpdateTableData . Чтобы получить текст в ячейке таблицы, используйте метод GetCellText .

Чтобы программно создать ReportTable, используйте метод Shapes.AddTable . Чтобы вернуть объект ReportTable , используйте Shapes(Index).Table, где Index — это имя или номер индекса фигуры.

Пример

Макрос TestReportTable создает отчет с именем Table Tests, а затем — объект ReportTable.

Sub TestReportTable()
    Dim theReport As Report
    Dim theShape As Shape
    Dim theReportTable As ReportTable
    Dim reportName As String
    Dim tableName As String
    Dim rows As Integer, columns As Integer, left As Integer, _
        top As Integer, width As Integer, height As Integer    
    rows = 3
    columns = 4
    left = 20
    top = 20
    width = 200
    height = 100
    
    reportName = "Table Tests"
    tableName = "Basic Project Data Table"
    
    Set theReport = ActiveProject.Reports.Add(reportName)
    
    ' Project ignores the NumRows and NumColumns parameters when creating a ReportTable.
    Set theShape = theReport.Shapes.AddTable( _
        rows, columns, left, top, width, height)
    
    theShape.Name = tableName
    
    Set theReportTable = theShape.Table
    
    With theReportTable
        Debug.Print "Rows: " & .RowsCount
        Debug.Print "Columns: " & .ColumnsCount
        Debug.Print "Table contents:" & vbCrLf & .GetCellText(1, 1)
    End With
End Sub

На рис. 1 основной объект ReportTable в отчете Тесты таблиц создается макросом TestReportTable . При первом создании таблицы она содержит одну строку и один столбец; Параметры NumRows и NumColumns метода AddTable не оказывают влияния. Количество строк и столбцов в таблице обновляется при добавлении полей в таблицу вручную из области задач "Список полей" или при использовании метода UpdateTableData . Вы можете отфильтровать поля, чтобы ограничить количество строк. Макрос TestReportTable записывает в окне Интерпретация VBE следующее:

Rows: 1
Columns: 1
Table contents:
Use the Table Data taskpane to build a table

Нижний объект ReportTable на рис. 1 — это таблица отчетов по умолчанию, которую проект создает при выборе таблицы на вкладке КОНСТРУКТОР в разделе ИНСТРУМЕНТЫ ОТЧЕТОВ. В нем отображаются имя проекта, дата начала, дата окончания и процент завершения сводной задачи проекта (идентификатор задачи = 0).

Рис. 1. Объект ReportTable требует ручного редактирования для добавления полей и изменения форматирования

Объект ReportTable требует редактирования вручную Чтобы удалить объект ReportTable , используйте метод Shape.Delete , как в следующем макросе:

Sub DeleteTheReportTable()
    Dim theReport As Report
    Dim theShape As Shape
    Dim reportName As String
    Dim tableName As String
    
    reportName = "Table Tests"
    tableName = "Basic Project Data Table"
    
    Set theReport = ActiveProject.Reports(reportName)
    Set theShape = theReport.Shapes(tableName)
    
    theShape.Delete
End Sub

Чтобы удалить весь отчет, перейдите в другое представление, как показано в следующем макросе:

Sub DeleteTheReport()
    Dim i As Integer
    Dim reportName As String
    
    reportName = "Table Tests"
    
    ' To delete the active report, change to another view.
    ViewApplyEx Name:="&Gantt Chart"
    
    ActiveProject.Reports(reportName).Delete
End Sub

Методы

Имя
GetCellText
UpdateTableData

Свойства

Имя
ColumnsCount
RowsCount

См. также

Объект отчета

Объект Shape

Объект Chart

Свойство Chart.DataTable

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

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