Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatics.doc
Скачиваний:
6
Добавлен:
21.08.2019
Размер:
1.33 Mб
Скачать

2.8. Построение графиков и таблиц в word

Графика реализуется в Word так же, как в Excel, за тем иск-лючением, что выбор типа диаграммы, в общем, затруднителен. С по-мощью автофигур (меню “Рисование”) изображение графиков значи-тельно проще. Программирование графики осуществляется теми же кодами, что и в Excel, заменяя объект ActiveSheet объектом ActiveDocument, и выбор цвета линии выполняется командой

.ForeColor.RGB = RGB(a, b, c), где a, b, c – целые числа из промежу-тка (0, 256), указывающие на степень присутствия красного, зеленого, синего в результирующем цвете.

Таблицы проще всего вводить с помощью меню “Ввод табли-цы” или “Рисование таблицы”, хотя возможно использование кода:

ActiveDocument.Tables.Add Range := Selection.Range, _

NumRows := 3, NumColumns := 5, _

DefaultTablesBehavior := wdWord9TablBehavior, _

AutoFitBehavior := wdAutoFitContent

C ячейками таблицы можно работать так же, как в Excel, с той лишь разницей, что в Word ячейка употребляется в единственном числе (Cell, а не Cells). Кроме того, Cell является свойством (подобъектом)

объекта Tables(n), который, в свою очередь, подчинен объекту ActiveDocument. Очистка содержимого ячейки выполняется методом

Cut или Delete. Ввести текстовое выражение в ячейку можно методом InsertAfter или InsertBefore. Возвращается содержимое ячейки свойс-твом Text.

Пример. Рассмотрим заполнение таблицы и построение графика сложной функции f(x) = e по десяти значениям функции на промежутке x ∈ [-2; 3] (на калькуляторе это сделать не-возможно). Здесь [ ∙ ] – целая часть числа . Используя основное меню, вставим в начало страницы таблицу с двумя строками и 12 столбцами. Далее, в меню “Сервис” → “Макрос” → “Создать” создадим макрос с

именем Graph. В кодовой странице модуля макроса сначала запишем

код вычисления функции (ср. с п. 1.10, пример 2):

Function f(x As Single) As Single

Dim r As Double, sq3 As Double, sum As Double, q As Double

Dim m As Double, x2 As Single, qrn As Double, n As Long, k As Integer

Const eps = 0.000001

sq3 = SQR(3): q = 1: r = x: x2 = x * x: m = 3: sum = x / sq3

While ABS(q) > eps

n = n + 1: sqn = SQR(n): r = r * x2 * sqn / m: m = 9 * m

If INT(sqn) Mod 2 Then k = -1 Else k = 1

q = k * r / SQR(3 – sq3): sum = sum + q: sq3 = SQR(3 + sq3)

Wend: f = EXP(sum)

End Function

Затем заполним тело макроса кодом:

Sub Graph()

Dim i As Integer, m As Integer, n As Integer, j As Integer

Dim a As Single, b As Single, h As Single, x() As Single

Dim y() As Single, xm As Single, ym As Single, z As Single

Const eps = 0.01

n = 10: ReDim x(n), y(n)

a = -2: b = 3: h = (b - a) / n

With ActiveDocument.Tables(6) 'Заполнение таблицы (см. табл. 3)

For i = 0 To n: z = a + i * h: x(i) = z

y(i) = f(z): If Abs(z) < eps Then z = 0

.Cell(1, i + 2).Select

With Selection

.Cut

.InsertAfter Left(Str(z), 5)

End With

z = y(i): b = Abs(z): If b < eps Then z = 0

If b > ym Then ym = b

.Cell(2, i + 2).Select

With Selection

.Cut

.InsertAfter Left(Str(z), 5)

End With

Next

End With: b = 3: xm = 300 / (b - a): ym = 200 / ym 'масштаб

'**** Рисование стрелок (осей координат) ****

With ActiveDocument.Shapes

.AddLine(150, 650, 480, 650).Select ' горизонтальная линия

With Selection.ShapeRange

.Line.EndArrowheadStyle = msoArrowheadTriangle 'стрелка

.Line.EndArrowheadLength = msoArrowheadLengthMedium

End With

.AddLine(150, 650, 150, 430).Select 'вертикальная линия

With Selection.ShapeRange

.Line.EndArrowheadStyle = msoArrowheadTriangle 'стрелка

.Line.EndArrowheadLength = msoArrowheadLengthMedium '

End With

'**** Рисование линии графика ****

a = 150: b = 650 - ym * y(0): h = x(0)

With .BuildFreeform(msoEditingAuto, a, b) 'начальная точка

For i = 1 To n: a = 150 + xm * (x(i) - h): b = 650 - ym * y(i)

.AddNodes msoSegmentCurve, msoEditingAuto, a, b

Next

.ConvertToShape.Select 'линия построена

End With

End With

With Selection.ShapeRange.Line

.Weight = 2.5 ' толщина линии

.Style = msoLineSingle 'стильодинарная линия

.Visible = msoTrue

End With

End Sub

Таблица 3

х:

-2

-1.5

-1

-.5

0

.5

1

1.5

2

2.5

3

у:

6.34

1.32

.769

.777

1

1.28

1.29

.754

.157

0

0

Рис. 4

В результате получается вполне пригодный для дальнейшего редакти-рования документ (рис. 4). Замечательно, что таким образом пост-роенный график привязан к конкретному месту листа и не связан с текстом, поэтому он легко может быть наложен на текст.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]