Это старая версия документа.
Для вывода графических схем в отчеты используется привязка типа "Файл". При этом выводится графика, которая уже существует в бизнес-модели (диаграмма процессов, оргструктуры). Не существует привязок, которые бы выводили различные диаграммы на основе цифровых данных бизнес-модели. Для решения подобных задач могут использоваться средства MS Word.
В статическом отчете формата Word необходимо вывести диаграмму с отображением количества непосредственно подчиненных должностей. Исходная информация для построения диаграммы будет представлена в таблице, формируемой привязкой.
Решение описывается с момента, когда в шаблоне отчета существует таблица – привязка типа "Фильтр" с отображением необходимых данных.
На основе таблицы необходимо построить диаграмму. Т.е. необходимо написать код, который вручную делался бы так:
Все решение сводится к написанию макроса.
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) ookmarkNaНАЯ BookmarkName = "НепосредственныеПодчинен_a5acb153" lumnStart As Integer ColumnStart = 2лицы для диаграммы Dim ColumnStart As Integer ColumnStart = 2 'Проверка на корректность названия привязки е (и до конца таблицы) Dim TableForChart As Table Bkm As Bookmark 'переменная типа Закладка ь названия привязки Dim BookmarkIs As Boolean в документе If Bkm.Name = Bookжной закладки нет Dim Bkm As Bookmark BookmarkIs = True 'опа Закладка For Each Bkm In ActiveDocument.Bookmarks привязки Set TableForChaадки в документе If Bkm.Name = BookmarkName Then End If Next 'ПРОЦ с нашим именем BookmarkIs = True есть countColumnsкладка есть чество столбцов таблицы countRows азванию привязки Set TableForChart = Application.ActiveDocument.Bookmarks(BookmarkName).Range.Tables(1) End If Next umns As Range АЯ ЧАСТЬ If BookmarkIs Then DataColumns = .Range(Start:=Tabзакладка есть countColumns = TableForChart.Columns.Count End:=TableForChart.Cell(cбцов таблицы countRows = TableForChart.Rows.Count End With WordBaрок таблицы мму с параметрами, указанными ниже With Application.ActiveDocumeнии которых будет создана диаграмма Dim DataColumns As Range With ActiveDocument Set DataColumns = .Range(Start:=TableForChart.Cell(1, ColumnStart).Range.Start, _ End:=TableForChart.Cell(countRows, countColumns).Range.End) DataColumns.Select End With WordBasic.InsertChart по центру етрами, указанными ниже With Application.ActiveDocument For i = 1 To Shapes.Count If (Shapes(i).Type = msoEmbeddedOLEObject) Then Shapes(i).Width = MillimetersToPoints(172.5) alue) ммы 17.25см Selection.ShapeRange.WrapFormat.Type = 3 унктир) круг рамки Selection.ShapeRange.Left = wdShapeCenter With axX.TickLabивание - по центру Set gr = Shapes(i).OLEFormat.Object.Application gr.Visible = False gr.PlotBy = XlRowCol.xlColumns Set axY из колонок With gr.Chart Set axX = .Axes(XlAxisType.xlValue) .Font.Size = 10 .Orieя-другая (короткий пунктир) axX.MajorGridlines.Border.LineStyle = XlLineStyle.xlDot With axX.TickLabels .AutoScaleFont = False .Font.FontStyle = "полужирный" .Font.Size = 12 End With Set axY = .Axes(XlAxisType.xlCategory) With axY.TickLabels .AutoScaleFont = False 'цвет общего фона диаграммы рный" .Font.Size = 10 .Orientation = xlUpward End With .ChartArea.Border.LineStyle = 0 нда, иначе надо писать то, что ниже ласти диаграммы = XlLegendPosition.xlLegendPositionBottom 'снизу по центру ная, столбцы значений рядом .ChartType = XlChartType.xlColumnClustered 'End With столбиков Shapes(i).ConvertToInlinый .PlotArea.Fill.Visible = False Next iем фон End Sub