Dmitriy Solomnikov » 02.02.2005 (Ср) 17:35
Вот готовый код для вставки диаграмм в лист MSWord:
Private Sub insertChart(ByRef oWord As Word.Application, ByRef oDoc As Word.Document, ByVal data() As Single, ByVal legend() As String)
Dim oShape As Word.InlineShape
Dim oChart As Object
Dim i As Integer 'счетчик
'------------создаем OLE-объект и присваиваем inlineShape--------------
'объект, который представляет наш OLE-объект, переменной(объекту) oShape.
'Вставляем его(OLE-объект) в конец документа ( \endofdoc - предопределенная звкладка)
'oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _
' ClassType:="MSGraph.Chart", FileName _
' :="", LinkToFile:=False, DisplayAsIcon:=False)
oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _
ClassType:="MSGraph.Chart", FileName _
:="", LinkToFile:=False, DisplayAsIcon:=False)
'----------------------------------------------------
oChart = oShape.OLEFormat.Object 'создаем объект chart
oChart.charttype = 5 'xlLine = 4 'задаем тип диаграммы
'--------задаем размеры диаграммы--------
oShape.Width = oWord.InchesToPoints(6.25)
oShape.Height = oWord.InchesToPoints(3.57)
'----------------------------------------
With oChart
.PlotArea.Fill.ForeColor.SchemeColor = 2
.PlotArea.Border.LineStyle = 0
With .Application.DataSheet
.activate()
.cells.delete()
For i = 1 To data.Length
Try
.cells(1, i + 1) = legend(i - 1)
.cells(2, i + 1) = data(i - 1)
Catch
End Try
Next
End With
End With
oChart.Application.Update()
oChart.Application.Quit()
End Sub
Моя дверь всегда открыта, если она не закрыта.