To illustrate the use of AutoShapes, the code in Example B-3 inserts a dampened sine curve of small stars in the drawing layer. The output from this code is shown in Figure B-7.

Example B-3. The DrawSine2 Subroutine

Sub DrawSine2()

' Dampened sine wave of small stars

Const pi = 3.1416

Dim i As Integer
Dim x As Single, y As Single
Dim rng As Range     ' For starting point 
Dim n As Single      ' Cycle length in inches
Dim k As Integer     ' k stars 
Dim ScaleY As Single ' Vertical scaling
Dim sSize As Single  ' Star size
Dim sDamp1 As Single  ' Dampening factor
Dim sDamp2 As Single  ' Dampening factor
Dim cCycles As Integer  ' Number of cycles
Dim sh As Shape

cCycles = 3
sDamp1 = 1
sDamp2 = 0.2
n = 2
k = 20
ScaleY = 0.5 
sSize = InchesToPoints(0.1)

' Start at insertion point 
Set rng = Selection.Range

' Loop for first curve with phase shift
For i = 1 To cCycles * k 
   x = n * i / k 
   y = ScaleY * Sin((2 * pi * i) / k + n) * _
      (sDamp1 / (x + sDamp2))
   y = InchesToPoints(y)
   x = InchesToPoints(x)
   Set sh = ActiveDocument.Shapes.AddShape _
      (msoShape5pointStar, x, y, sSize, sSize, rng)
   sh.Fill.ForeColor.RGB = RGB(192, 192, 192) ' 25% gray
   sh.Fill.Visible = msoTrue
Next i

End Sub
A dampened sine wave of stars

Figure B-7. A dampened sine wave of stars

The code in Example B-4 produces a random series of stars, each containing a single letter that together spells a name. Note that each time the program is run, the pattern is different. One output ...

Get Writing Word Macros, Second Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.