O'Reilly logo

Writing Word Macros, Second Edition by Steven Roman PhD

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Examples

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required