2012年10月8日月曜日

PPT2010マクロ(3)

PPTマクロ(6)、PPTマクロでつくったもの2
PPTマクロ(5)、PPTマクロでつくったもの1
PPTマクロ(4)、マクロで四角形や楕円などを描く
PPTマクロ(3)、マクロで直線を描く
PPTマクロ(2)、マクロを有効化する
PPTマクロ(1)、マクロ作成の動機

PPTマクロ(3)、マクロで直線を描く


 パワーポイントPPTのマクロ作成においてつまずくと、その解決に半日以上かかることがある。私だけかと思っていたら、そうではない。多くの人が、たいしたことはないコマンドを見つけるのに、多くの時間を割いているようである。これはPPTマクロの情報源が少ないことによる。
 そこで、これからは例題を列挙していく。
 その前に、PPTスライド上の位置を決める数値、原点・中心点などを確認しておく。
 下図にPPTディフォールトの場合を示す。


 左上が原点(0,0)である。右下が(720,540)である。中心は(360,270)となる。数字の単位はpt(ポイント)で、1pt=1/72インチ=25.4/72mm=0.3527777・・mmである。幅1ptx720=25.4cm、高さ1pt x 540=19.05cmがパワーポイントのディフォールト値でA4サイズより小さい。パワーポイントのサイズは変更可能なのでサイズ変更した場合は、中心値と右下値も変わることを認識しておく必要がある。

 先ず、PPTのマクロを使って、左上の原点から右下まで、赤色で線を引いてみよう。
そのマクロを以下で示す。

Sub Line()
  ActivePresentation.Slides(1).Shapes.AddLine(0, 0, 720, 540). _
    Line.ForeColor.RGB = RGB(255, 0, 0)
End Sub

 マクロ名をLineとして上記4行をPPTマクロのエディターにコピーして実行させると、左上から右下に赤色の線を描いてくれる。

以下、このマクロを説明していく。

Sub マクロ名() 
End Sub

はマクロの基本である。マクロ名も変数もひらがな、カタカナ、漢字が一応使えるが、そのような例はほとんどみかけない。多分エラーがでるケースがあるからであろう。Sub マクロ名()とEnd Subの間にマクロを記述していく。原点と右下をつなぐマクロ

  ActivePresentation.Slides(1).Shapes.AddLine(0, 0, 720, 540). _
    .Line.ForeColor.RGB =RGB(255, 0, 0)

は、1行のコマンドである。上記1行目最後のスペースとアンダーバーが、継続行であることを示している。

これを翻訳すると、以下のようになる。
ActivePresentation          現在のプレゼンテーションの
.Slides(1)                  1枚目のスライドに
.Shapes                     図形として
.AddLine(0, 0, 720, 540)    (0,0),(720,540)間に線を引く
.Line                       線の
.ForeColor.RGB =            前景色は
RGB(255, 0, 0)       R(赤):G(緑):B(青)=255:0:0 である。(注)


通常、線を引くコマンドを1行で書かない。

1行で書いたオリジナル;
Sub Line()
  ActivePresentation.Slides(1).Shapes.AddLine(0, 0, 720, 540). _
      Line.ForeColor.RGB = RGB(255, 0, 0)
End Sub

最初の変更:
Sub Line()
    Set myDocument= ActivePresentation.Slides(1)
    myDocument.Shapes.AddLine(0, 0, 720, 540). _
        Line.ForeColor.RGB = RGB(255, 0, 0)
End Sub

ActivePresentation.Slides(1)は何度も使う可能性があることから、これをmyDocumentとして以降はActivePresentation.Slides(1)の代わりにmyDocumentを使う。myDocumentでなく別の単語を使ってもかまわない。

次の変更:
Sub Line()
    Set myDocument= ActivePresentation.Slides(1)
    with myDocument.Shapes.AddLine(0, 0, 720, 540).Line
         .ForeColor.RGB = RGB(255, 0, 0)
    End with
End Sub

 線をここでは赤色にすることだけを指定したが、線幅を指定したり、点線など線の種類を指定する場合が生じる。これら複数の指定を指定する場合、 myDocument.Shapes.AddLine(0, 0, 720, 540).Line まで共通でそれ以降いろんなものを付け足すことになる。このようなとき

With
End With 

を使用する。

Sub Line()
    Set myDocument= ActivePresentation.Slides(1)
    with myDocument.Shapes.AddLine(0, 0, 720, 540).Line
       .ForeColor.RGB = RGB(255, 0, 0)       ‘線の色 赤
       .Weight=2                         ‘線の幅 2ポイント
    End with
End Sub

 ここでは、線幅指定を追加した。アポストフィ ‘ は、それ以降は無効を示す。このため、上記のようにコメントを追加することができる。日本文字のアポストフィ‘もOK。

 一つのマクロ内で線は1本のみでなく、何本も引く場合が多い、このとき座標に変数を使う必要がある。座標を変数にするとともにDimを使って変数宣言しておくことが勧められている。変数宣言しなければならないケースと特に指定しなくてもよいケースがあるが、エラーを少なくするため、常に変数指定するくせをつけておいたほうがよい。

結果的に以下のようになる。

Sub Line()
    Dim X1 As Integer, Y1 As Integer ‘X1,Y1変数(整数)宣言
    Dim X2 As Integer, Y2 As Integer ‘X2,Y2  変数(整数)宣言
    X1=0
    Y1=0      ‘X1,Y1 線引きの始点
    X2=720
    Y2=540      ‘X2,Y2 線引きの終点
    Set myDocument= ActivePresentation.Slides(1)
    with myDocument.Shapes.AddLine(X1, Y1, X2, Y2).Line
        .ForeColor.RGB = RGB(255, 0, 0)  ‘線の色 赤
        .Weight=2            ‘線の幅 2ポイント
    End with
End Sub

(注)
RGB(0,0,0)は、黒を示し、RGB(255,255,255)は白を示す。RGBそれぞれの最大値は255で、色の組み合わせは256の3乗で約千七百万色となる。

(追記)
今回は、線を引くというコマンド例であったが、全てのコマンドにオブジェクト(対象)、メソッド(実行[方法])、プロパティ(性質)が含まれている。

ActivePresentation.Slides(1).Shapes「現プレゼンテーションの1枚目のスライドにおける図形」がオブジェクト(対象)であり、
AddLine(0, 0, 720, 540)「線を引く」がメソッド(実行)であり、
Line .ForeColor.RGB = RGB(255, 0, 0)「赤の線」がプロパティ(性質)である。

もし、長方形を書きたいと思えば、
「PowerPoint Object Model Reference (英語)」 
でShapesというオブジェクトの中に見つけることができる。

(つづく)

その他、シリーズも書いています。 ブログ「dousube」検索画面より検索下さい。


0 件のコメント:

コメントを投稿