Как создать график в excel vba
Перейти к содержимому

Как создать график в excel vba

  • автор:

Работа с диаграммами

В Word 2007 с пакетом обновления 2 (SP2) или более поздней версии можно программными средствами осуществлять доступ к диаграммам с использованием объектной модели VBA в приложении Word. Объект диаграммы в Word создается посредством той же общей реализации слоя документа Office, которая используется в Excel, поэтому если вы знакомы с объектной моделью для создания диаграмм в Excel, то можете легко перенести VBA-код Excel, осуществляющий операции с диаграммой, в VBA-код Word.

Использование объекта Chart

В Word диаграмма представлена объектом Chart . Объект Chart содержится inlineShape или Shape. Используйте коллекцию InlineShapes или Shapes объекта Document для добавления новых диаграмм или доступа к существующим диаграммам. Для добавления новой диаграммы используется метод AddChart для обеих коллекций, указывающий тип и расположение диаграммы в документе.

Используйте свойство HasChart , чтобы определить, содержит ли объект InlineShape или Объект Shape диаграмму. Если Функция HasChart возвращает значение True, можно использовать свойство Chart , чтобы получить ссылку на объект Chart , представляющий диаграмму. На этом этапе реализация практически идентична реализации Excel и кода VBA, в большинстве случаев может быть передан между двумя программами.

Например, следующий пример кода VBA добавляет новую двухуровневую гистограмму с накоплением на активный лист Excel и задает исходные данные диаграммы в диапазонЕ A1:C3 на листе Sheet1.

Sub AddChart_Excel() Dim objShape As Shape ' Create a chart and return a Shape object reference. ' The Shape object reference contains the chart. Set objShape = ActiveSheet.Shapes.AddChart(XlChartType.xlColumnStacked100) ' Ensure the Shape object contains a chart. If so, ' set the source data for the chart to the range A1:C3. If objShape.HasChart Then objShape.Chart.SetSourceData Source:=Range("'Sheet1'!$A$1:$C$3") End If End Sub 

Для сравнения в следующем примере кода VBA добавляется новая двухуровневая гистограмма с накоплением в активный документ в и задает исходные данные диаграммы в диапазонЕ A1:C3 из данных диаграммы, связанных с диаграммой.

Sub AddChart_Word() Dim objShape As InlineShape ' Create a chart and return a Shape object reference. ' The Shape object reference contains the chart. Set objShape = ActiveDocument.InlineShapes.AddChart(XlChartType.xlColumnStacked100) ' Ensure the Shape object contains a chart. If so, ' set the source data for the chart to the range A1:C3. If objShape.HasChart Then objShape.Chart.SetSourceData Source:="'Sheet1'!$A$1:$C$3" End If End Sub 

Основные различия между объектом Chart в Word и объектом ChartObject в Excel

Несмотря на то, что работа с диаграммами между Excel и Word в большинстве случаев практически идентична, полезно определить важные области, в которых две реализации отличаются:

  • Для программного создания объекта ChartData или управления ими в Word требуется запуск Excel.
  • Свойства диаграммы и методы для управления листом диаграммы не реализованы. Концепция листа диаграммы связана с Excel. Листы диаграмм не используются в Word, поэтому методы и свойства, используемые для ссылки на лист диаграммы или управления им, были отключены для этих приложений.
  • Свойства и методы, которые в Excel обычно принимают ссылку на объект Range , теперь принимают адрес диапазона в Word. Объект Range в Word отличается от объекта Range в Excel. Чтобы избежать путаницы, объектная модель диаграммы в Word принимает строки адресов диапазона, такие как «=’Sheet1′!$A$1:$D$5», в тех свойствах и методах (например, метод SetSourceData объекта Chart), которые принимают объекты Range в Excel.
  • В объектные модели VBA для Word добавлен новый объект ChartData для предоставления доступа к базовым связанным или внедренным данным для диаграммы. С каждой диаграммой связаны данные, используемые для рисования диаграммы в Word. Данные диаграммы могут быть связаны из внешней книги Excel или внедрены как часть самой диаграммы. Объект ChartData инкапсулирует доступ к данным для данной диаграммы в Word. Например, в следующем примере кода VBA отображаются, а затем свернуты данные диаграммы для каждой диаграммы, содержащейся в активном документе в Word.
Sub ShowWorkbook_Word() Dim objShape As InlineShape ' Iterates each inline shape in the active document. ' If the inline shape contains a chart, then display the ' data associated with that chart and minimize the application ' used to display the data. For Each objShape In ActiveDocument.InlineShapes If objShape.HasChart Then ' Activate the topmost window of the application used to ' display the data for the chart. objShape.Chart.ChartData.Activate ' Minimize the application used to display the data for ' the chart. objShape.Chart.ChartData.Workbook.Application.WindowState = -4140 End If Next End Sub 

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

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

Объект Chart (Excel)

Диаграмма может представлять собой внедренную диаграмму (содержащуюся в объекте ChartObject) или отдельный лист диаграммы.

Коллекция Charts содержит объект Chart для каждого листа диаграммы в книге. Чтобы вернуть один объект Chart, используйте синтаксис Charts (индекс), где индекс — это номер индекса или имя листа диаграммы.

Номер индекса диаграммы представляет положение листа диаграммы на панели вкладок книги. Charts(1) — это первая (крайняя левая) диаграмма в книге; Charts(Charts.Count) — последняя (самая правая).

Все листы диаграмм включаются в число индексов, даже если они скрыты. Имя листа диаграммы отображается на вкладке книги для диаграммы. Используйте свойство Name объекта ChartObject, чтобы задать или возвратить имя диаграммы.

В следующем примере изменяется цвет ряда 1 на листе диаграммы 1.

Charts(1).SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbRed 

В следующем примере диаграмма Sales (Продажи) перемещается в конец активной книги.

Charts("Sales").Move after:=Sheets(Sheets.Count) 

Объект Chart также является элементом коллекции Sheets, который содержит все листы книги (рабочие листы и листы диаграммы). Чтобы вернуть один лист, используйте синтаксис Sheets (индекс), где индекс — это номер индекса или имя листа.

Если диаграмма является активным объектом, для ссылки на нее можно использовать свойство ActiveChart. Лист диаграммы активен, если пользователь выбрал его или он активирован с помощью метода Activate объекта Chart или метода Activate объекта ChartObject.

В следующем примере активируется лист диаграммы 1, а затем задается тип и заголовок диаграммы.

Charts(1).Activate With ActiveChart .Type = xlLine .HasTitle = True .ChartTitle.Text = "January Sales" End With 

Внедренная диаграмма активна, если пользователь выбрал ее или объект ChartObject, в котором она находится, активирован с помощью метода Activate.

В следующем примере активируется внедренная диаграмма 1 на листе 1, а затем задается тип и название диаграммы. Обратите внимание, что после активации внедренной диаграммы код в этом примере совпадает с предыдущим примером. С помощью свойства ActiveChart можно написать код на языке Visual Basic, который может ссылаться на внедренную диаграмму или на лист диаграммы (в зависимости от активного объекта).

Worksheets(1).ChartObjects(1).Activate ActiveChart.ChartType = xlLine ActiveChart.HasTitle = True ActiveChart.ChartTitle.Text = "January Sales" 

Если лист диаграммы является активным листом, для ссылки на него можно использовать свойство ActiveSheet. В следующем примере используется метод Activate для активации листа диаграммы Chart1, а затем задается синий цвет для ряда 1 на диаграмме.

Charts("chart1").Activate ActiveSheet.SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbBlue 

События

Методы

Свойства

См. также

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

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

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Объект Chart (Project)

Объект Chart представляет диаграмму для отчета в Project.

Замечания

Объект Chart в Project включает стандартные элементы, которые другие приложения Office реализуют для Office Art. Например, см. объект Chart в объектной модели VBA для Word, Excel и PowerPoint.

В Project диаграмма представлена объектом Chart , который содержится в объекте Shape или коллекции ShapeRange в объекте Report . Схему, показывающую объект Chart в иерархии объектной модели Project, см. в разделе Схема объектов приложений и проектов.

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

Используйте метод Shapes.AddChart для добавления диаграммы в отчет. Чтобы определить, содержит ли диаграмма shape или ShapeRange , используйте метод HasChart .

Объект Chart в Project не реализует события. Таким образом, диаграмма в Project не может быть анимирована для взаимодействия с событиями мыши или реагирования на такие события, как Выбор или Вычисление, как это возможно в Excel.

Пример

В следующем примере создается простая скалярная диаграмма для задач в активном проекте. На диаграмме показаны поля по умолчанию «Фактические трудозаготовки«, «Оставшиеся трудозаготовки» и «Трудозатреки«.

Чтобы создать некоторые примеры данных, добавьте четыре задачи в новый проект, назначьте им локальные ресурсы и задайте различные значения длительности и фактической работы. Например, попробуйте использовать значения в таблице 1.

Таблица 1. Пример данных для простой диаграммы

Имя задачи Duration Фактическая работа
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 

При запуске макроса AddSimpleScalarChart Project создает отчет и добавляет диаграмму. Диаграмма имеет функции по умолчанию, за исключением того, что заголовок указан свойством SetElement , наложенным на диаграмму, а не позицией по умолчанию над диаграммой.

Рис. 1. На диаграмме показаны данные в таблице 1

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

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 

Чтобы удалить отчет, перейдите в другое представление и откройте диалоговое окно Организатор . Невозможно удалить отчет, пока отчет активен. Организатор доступен на вкладке РАЗРАБОТЧИК ленты, а также на вкладке КОНСТРУКТОР в группе Отчет в меню Управление. На вкладке Отчеты диалогового окна Организатор выберите Простая скалярная диаграмма в области проекта, а затем нажмите кнопку Удалить. Кроме того, выполните следующий макрос, чтобы удалить отчет.

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 

Как создать график в excel vba

Argument ‘Topic id’ is null or empty

Сейчас на форуме

© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru

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

ООО «Планета Эксел»
ИНН 7735603520
ОГРН 1147746834949
ИП Павлов Николай Владимирович
ИНН 633015842586
ОГРНИП 310633031600071

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *