2012年11月4日日曜日

PPT2010マクロ(4)

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

PPTマクロ(4)、マクロで四角形や楕円などを描く


 前回は、PPTマクロのコマンドが、オブジェクト、メソッド、プロパティを含んで書かれていることを、実線を引くマクロで具体的に説明した。
 今回は、PPTの図形のうち、四角形、楕円、角丸四角とテキストを書くマクロ例を紹介する。次図は4つのマクロの出力である。



図形を描くマクロとして、先ず、四角形を描くマクロを示す。

――四角形描画マクロ 

Sub Sikakkei()
    Dim L As Single, T As Single, W As Single, H As Single
   
    L = 80         '四角形の左上隅のX座標
    T = 60         '四角形の左上隅のY座標
    W = 240        '四角形の幅
    H = 180        '四角形の高さ
    Set myDocument= ActivePresentation.Slides(1)
    With myDocument.Shapes.AddShape _
        (msoShapeRectangle, L, T, W, H)
        .Fill.ForeColor.RGB = RGB(255, 0, 0) '塗りつぶし 赤
        .Fill.Transparency = 0.9             ' 透明度0.9
        .Line.Weight = 1                     '線幅 1pt
        .Line.ForeColor.RGB = RGB(0, 0, 0)   '線の色 黒
    End With
End Sub


­――以上、四角形描画マクロ 

図形の位置、大きさ指定は、(1)図形の左上点のX座標、(2)図形の左上点のY座標、(3)図形の幅、(4)図形の高さ の順で指定する。これはどんな図形を描く場合も同じである。
msoは、マイクロソフトのオフィスという意味で、オフィスに共通して使えるコマンドである。
ちなみに
Set myDocument = ActivePresentation.Slides(1)

Set myDocument = ActiveSheet
とすれば、Excelで使用できる。
また、
Set myDocument = ActiveDocument
とすれば、Wordで使用できる。
以下のマクロも同じ変更で、ExcelやWordで使うことができる。ということは、図形描画まくろはオフィス共用のマクロと言える。

   
――楕円描画マクロ 

Sub Daen()
    Dim L As Single, T As Single, W As Single, H As Single
   
    L = 400    '楕円に接する四角形の左上のX座標
    T = 60     '楕円に接する四角形の左上のY座標
    W = 240    '楕円に接する四角形の幅
    H = 180    '楕円に接する四角形の高さ
    Set myDocument = ActivePresentation.Slides(1)
    With myDocument.Shapes.AddShape(msoShapeOval, L, T, W, H)
        .Fill.ForeColor.RGB = RGB(0, 255, 0) '塗りつぶし 緑
        .Fill.Transparency = 0.7             ' 透明度0.7
        .Line.ForeColor.RGB = RGB(0, 0, 0)   '枠線 黒
        .Line.Weight = 2                     '枠線幅 2pt
    End With
End Sub


――以上、楕円描画マクロ 


四角形図描画から塗りつぶしの色、透明度、線幅を変えてみた。



――角丸四角描画マクロ 

Sub KadomaruSikaku()
    Dim L As Single, T As Single, W As Single, H As Single
   
    L = 80      '角丸四角に接する四角形の左上隅のX座標
    T = 300     '角丸四角に接する四角形の左上隅のY座標
    W = 240     '角丸四角に接する四角形の幅
    H = 180     '角丸四角に接する四角形の高さ
    Set myDocument = ActivePresentation.Slides(1)
    With myDocument.Shapes.AddShape _
        (msoShapeRoundedRectangle, L, T, W, H)
        .Adjustments.Item(1) = 0.3            '角丸の程度 0.3
        .Fill.ForeColor.RGB = RGB(0, 0, 255)  '塗りつぶし 青
        .Fill.Transparency = 0.5              ' 透明度 0.5
        .Line.ForeColor.RGB = RGB(0, 0, 0)    '線の色 黒
        .Line.Weight = 3                      '線の幅 3pt
    End With
End Sub


――以上、角丸四角描画マクロ
 
角丸の程度は、上記の .Adjustments.Item(1) = 0.3 で指定している。数値は、角丸の長さと短辺の長さの比である。0であれば、普通の四角形である。大きな値を入れてもエラーにはならないが、実質の最大値は、0.5である。



――テキスト文挿入マクロ

Sub TekisutoBun()
    Dim L As Single, T As Single, W As Single, H As Single
    Dim TextMoji AsString
   
    L = 400    'テキスト枠の左上隅のX座標
    T = 300    'テキスト枠の左上隅のY座標
    W = 240    'テキスト枠の幅
    H = 300    'テキスト枠の高さ
    TextMoji = "計算式例 y=x2" + vbCrLf + "化学式例 CO2"
    Set myDocument= ActivePresentation.Slides(1)
    With myDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,L, T, W, H)
       .TextFrame.TextRange.Text = TextMoji
       .TextFrame.TextRange.Font.Name = "Century"
                '英字フォント
       .TextFrame.TextRange.Font.NameFarEast = "MS Pゴシック"
                '漢字フォント
       .TextFrame.TextRange.Font.Size = 24
                '文字サイズ24pt
       .TextFrame.TextRange.Font.Color.RGB = RGB(255, 0, 0)
                '文字の色 赤色
       .TextFrame.TextRange.Font.Bold = msoTrue
                '太文字
       .TextFrame.TextRange.Characters(9, 1).Font.BaselineOffset= 0.3
                '上付き文字
       .TextFrame.TextRange.Characters(18, 1). Font.BaselineOffset = -0.3
                '下付き文字
       .TextFrame.TextRange.ParagraphFormat.Alignment = msoAlignCenter
               '中央合わせ
       .Fill.ForeColor.RGB = RGB(255, 255, 0)
                '塗りつぶし 黄色
       .Fill.Transparency = 0.3
                ' 透明度0.3
       .Line.Visible = msoFalse
                 '線なし
  End With
End Sub 

――以上、テキスト文挿入マクロ
 

上付き文字、下付き文字も、中央合わせなども行っている。文の改行は、文字変数TextMojiの中に次のように書かれている。

TextMoji = "計算式例 y=x2" + vbCrLf + "化学式例 CO2"

このなかのvbCrLfが改行命令語である。文字を上付きにしたり、下付きにしたりするとき文字数を数えて設定しなければならないが、この改行命令語も1文字としてカウントする必要がある。

上記のマクロに共通して、塗りつぶしにグラデーションをつけたい場合は、マイクロソフト提供の次のURLを参考にするとよい。
http://msdn.microsoft.com/en-us/library/bb265429(v=office.12).aspx 及び
http://msdn.microsoft.com/en-us/library/bb265468(v=office.12).aspx
枠線でダッシュ(各種点線)を使いたい場合は、次のURLを参考。
http://msdn.microsoft.com/en-us/library/bb265344(v=office.12).aspx
枠線で2重線や3重線を使いたい場合は、次のURLを参照。
http://msdn.microsoft.com/en-us/library/bb251238(v=office.12).aspx
2重線や3重線を描くときには、線幅を広く指定する必要がある。そうしないと1重線にしかみえない。
(つづく)

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

0 件のコメント:

コメントを投稿