Это старая версия документа.
Для вывода графических схем в отчеты используется привязка типа "Файл". При этом выводится графика, которая уже существует в бизнес-модели (диаграмма процессов, оргструктуры). Не существует привязок, которые бы выводили различные диаграммы на основе цифровых данных бизнес-модели. Для решения подобных задач могут использоваться средства MS Word.
В статическом отчете формата Word необходимо вывести диаграмму с отображением количества непосредственно подчиненных должностей. Исходная информация для построения диаграммы будет представлена в таблице, формируемой привязкой.
Решение описывается с момента, когда в шаблоне отчета существует таблица – привязка типа "Фильтр" с отображением необходимых данных.
На основе таблицы необходимо построить диаграмму. Т.е. необходимо написать код, который вручную делался бы так:
Все решение сводится к написанию макроса.
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) kmarkNameНАЯ BookmarkName = "НепосредственныеПодчинен_a5acb153" umnStart As Integer ColumnStart = 2 'лицы для диаграммы Dim ColumnStart As Integer ColumnStart = 2 'Проверка на корректность названия привязки е (и до конца таблицы) Dim TableForChart As Table m As Bookmark 'переменная типа Закладка ь названия привязки Dim BookmarkIs As Boolean документе If Bkm.Name = BookmarkNжной закладки нет Dim Bkm As Bookmark BookmarkIs = True 'отмечаепа Закладка For Each Bkm In ActiveDocument.Bookmarks зки Set TableForChart = Aадки в документе If Bkm.Name = BookmarkName Then End If Next 'ПРОЦЕДУРНАЯ Ч с нашим именем BookmarkIs = True countColumns = TableForкладка есть лбцов таблицы countRows = TableForCазванию привязки Set TableForChart = Application.ActiveDocument.Bookmarks(BookmarkName).Range.Tables(1) End If Next ange With АЯ ЧАСТЬ If BookmarkIs Then ns = .Range(Start:=TableForChartзакладка есть countColumns = TableForChart.Columns.Count TableForChart.Cell(countRows,бцов таблицы countRows = TableForChart.Rows.Count WordBasic.InsertChрок таблицы метрами, указанными ниже With Application.ActiveDocument нии которых будет создана диаграмма 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 Setетрами, указанными ниже With Application.ActiveDocument For i = 1 To Shapes.Count If (Shapes(i).Type = msoEmbeddedOLEObject) Then Shapes(i).Width = MillimetersToPoints(172.5) ммы 17.25см Selection.ShapeRange.WrapFormat.Type = 3 axX.Majкруг рамки Selection.ShapeRange.Left = wdShapeCenter With axX.TickLabels ивание - по центру Set gr = Shapes(i).OLEFormat.Object.Application gr.Visible = False gr.PlotBy = XlRowCol.xlColumns Set axY = .Axes(XlAxis из колонок With gr.Chart Set axX = .Axes(XlAxisType.xlValue) .Font.Size = 10 .Orientation = xlUpя-другая (короткий пунктир) 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 'цвет общего фона диаграммы '.Charрный" .Font.Size = 10 .Orientation = xlUpward End With .ChartArea.Border.LineStyle = 0 до писать то, что ниже ласти диаграммы ition.xlLegendPositionBottom 'снизу по центру ная, столбцы значений рядом .ChartType = XlChartType.xlColumnClustered столбиков Shapes(i).ConvertToInlineShape ый .PlotArea.Fill.Visible = False End Wiем фон