Edit

Share via


Chart object (Project)

The Chart object represents a chart on a report in Project.

Remarks

The Chart object in Project includes the standard members that other Office applications implement for Office Art. For example, see the Chart object in the VBA object model for Word, Excel, and PowerPoint.

In Project, a chart is represented by a Chart object, which is contained by a Shape object or a ShapeRange collection in a Report object. For a diagram that shows the Chart object in the Project object model hierarchy, see Application and Projects object map.

Note

Macro recording for the Chart object is not implemented. That is, when you record a macro in Project and manually add a chart, add chart elements, or manually format a chart in a report, the steps for adding and manipulating the chart are not recorded.

Use the Shapes.AddChart method to add a chart to a report. To determine whether a Shape or a ShapeRange contains a chart, use the HasChart method.

The Chart object in Project does not implement events. So, a chart in Project cannot be animated to interact with mouse events or respond to events such as Select or Calculate, as it can in Excel.

Example

The following example creates a simple scalar chart for tasks in the active project. The chart shows the Actual Work, Remaining Work, and Work default fields.

To create some sample data, add four tasks to a new project, assign local resources to those tasks, and set various values of duration and actual work. For example, try the values in Table 1.

Table 1. Sample data for a simple chart

Task name Duration Actual work
T1 2d 16
T2 5d 19
T3 4d 7
T4 2d 0
Sub AddSimpleScalarChart()
    Dim chartReport As Report
    Dim reportName As String
    
    ' Add a report.
    reportName = "Simple scalar chart"
    Set chartReport = ActiveProject.Reports.Add(reportName)

    ' Add a chart.
    Dim chartShape As Shape
    Set chartShape = ActiveProject.Reports(reportName).Shapes.AddChart()
    
    chartShape.Chart.SetElement (msoElementChartTitleCenteredOverlay)
    chartShape.Chart.ChartTitle.Text = "Sample Chart for the Test1 project"
End Sub

When you run the AddSimpleScalarChart macro, Project creates the report and adds a chart. The chart has default features, except the title is specified by the SetElement property to be overlaid on the chart, instead of the default position above the chart.

Figure 1. The chart shows the data in Table 1

Simple scalar chart in a reportTo delete the chart, you can delete the shape that contains the chart. The following macro deletes the chart on the report that is created by the AddSimpleScalarChart macro, and leaves the empty report as the active view.

Sub DeleteTheShape()
    Dim i As Integer
    Dim reportName As String
    Dim theShape As MSProject.Shape
    
    reportName = "Simple scalar chart"
        
    For i = 1 To ActiveProject.Reports.Count
        If ActiveProject.Reports(i).Name = reportName Then
            Set theShape = ActiveProject.Reports(i).Shapes(1)
            theShape.Delete
        End If
    Next i
End Sub

To delete the report, go to a different view, and then open the Organizer dialog box. You cannot delete a report while the report is active. The Organizer is available on the DEVELOPER tab of the ribbon, and also on the DESIGN tab, in the Report group, on the Manage menu. On the Reports tab of the Organizer dialog box, select Simple scalar chart in the project pane, and then choose Delete. Alternately, run the following macro to delete the report.

Sub DeleteTheReport()
    Dim i As Integer
    Dim reportName As String
    
    reportName = "Simple scalar chart"

    ' To delete the active report, change to another view.
    ViewApplyEx Name:="&Gantt Chart"
    
    ActiveProject.Reports(reportName).Delete
End Sub

Methods

Properties

See also

Shape Object

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.