VBA (Visual Basic for Applications)でMicrosoft PowerPointを操作する方法を解説します。

目次

PowerPointのオブジェクト

PowerPointを操作するために、VBAには次のオブジェクトが用意されている。

PowerPointのオブジェクト
オブジェクト 説明
Application PowerPointアプリケーション全般に適用される設定やオプション、ActivePresentationやWindowなどの最上位レベルのオブジェクトを取得するプロパティが含まれる。
ColorFormat 単色、グラデーション又はパターンの塗りつぶしを持つオブジェクトの前景色又は背景色を表すオブジェクト
FillFormat 図形の塗りつぶしの書式設定を表すオブジェクト
GroupShapes グループ化された図形の中の各図形を表すコレクション
Presentaion PowerPointのプレゼンテーションを表すオブジェクト
Shape オートシェイプ、フリーフォーム、OLEオブジェクト又は図などの描画オブジェクトを表す。
Shapes スライドのすべてのShapeオブジェクトのコレクション
Slide スライドに配置されたすべての要素を表すオブジェクト
Slides プレゼンテーションのすべてのSlideオブジェクトのコレクション
TextFrame 配置及びアンカーのプロパティの指定された図形又はマスタテキストスタイルを含むTextFrameオブジェクト
TextFrame2 指定した図形範囲の配置及びアンカーのプロパティ値を含む特定のShapeオブジェクトに関連付けられたTextFrame2オブジェクトであり、値の取得のみ可能。
TextRange 図形に付加されたテキストを表すオブジェクトであり、値の取得のみ可能。

Application

Applicationオブジェクトとは、PowerPointアプリケーション全般に適用される設定やオプション、ActivePresentationやWindowなどの最上位レベルのオブジェクトを取得するプロパティが含まれるオブジェクトである。

Applicationオブジェクトのプロパティ
プロパティ 説明
ActivePresentaion 作業中のウィンドウで開かれたプレゼンテーションを表すPresentationオブジェクトであり、値の取得のみ可能。
ActivePrinter 使用可能なプリンタの名前であり、値の取得のみ可能。
PowerPoint Applicationオブジェクトのメソッド
メソッド 説明
Quit PowerPointアプリケーションを終了する。

すべてのShapeを取得する例を次に示す。

Dim sld As Slide
Dim shp As Shape

For Each sld In ActivePresentaion.Slides
  For Each shp In sld.Shapes
    ' 何らかの処理
  Next
Next

Presentaion

Presentaionオブジェクトとは、PowerPointのプレゼンテーションを表すオブジェクトである。

Presentaionオブジェクトのプロパティ
プロパティ 説明
Slides プレゼンテーションのすべてのスライドを表すSlidesコレクションであり、値の取得のみ可能。

ColorFormat

ColorFormatオブジェクトとは、単色、グラデーション又はパターンの塗りつぶしを持つオブジェクトの前景色又は背景色を表すオブジェクトである。

ColorFormatオブジェクトのプロパティ
プロパティ 説明
RGB RGB値

FillFormat

FillFormatオブジェクトとは、図形の塗りつぶしの書式設定を表すオブジェクトである。

FillFormatオブジェクトのプロパティ
プロパティ 説明
ForeColor 塗りつぶしの前景色、線、影を表すColorFormatオブジェクト

GroupShapes

GroupShapesオブジェクトとは、グループ化された図形の中の各図形を表すコレクションである。各図形はShapeオブジェクトで表される。このオブジェクトでItemメソッドを使用すると、それらの図形のグループ化を解除しなくても、グループ内の図形に個別に設定することができる。

Shape

Shapeオブジェクトとは、オートシェイプ、フリーフォーム、OLEオブジェクト又は図などの描画オブジェクトを表すオブジェクトである。

Shapeオブジェクトのプロパティ
プロパティ 説明
Fill 塗りつぶしのプロパティを指定した図形の書式設定が含まれるFillFormatオブジェクトであり、読み取り専用。
GroupItems 指定グループ内の各図形を表すGroupShapesオブジェクトであり、値の取得のみ可能。
Left 図形の境界ボックスの左端からスライドの左端までの距離をポイント単位で表した単精度浮動小数点(Single)の値。値の取得及び設定が可能。
TextFrame 配置及びアンカーのプロパティの指定された図形又はマスタテキストスタイルを含むTextFrameオブジェクト
TextFrame2 指定した図形範囲の配置及びアンカーのプロパティ値を含む特定のShapeオブジェクトに関連付けられたTextFrame2オブジェクトであり、値の取得のみ可能。
Top 図形の境界ボックスの上端からスライドの上端までの距離をポイント単位で表した単精度浮動小数点(Single)の値。値の取得及び設定が可能。
Type 図形範囲の図形の種類を表す。値の取得のみ可能。

TypeプロパティにはMsoShapeType列挙型の値が格納されている。

MsoShapeType列挙型
Member 説明
msoAutoShape オートシェイプ
msoCallout 吹き出し
msoCanvas キャンバス
msoChart グラフ
msoComment コメント
msoDiagram 図表
msoEmbeddedOLEObject 埋め込みOLEオブジェクト
msoFormControl フォームコントロール
msoFreeForm フリーフォーム
msoGroup グループ
msoInk インク
msoInkComment インクコメント
msoLine
msoLinkedOLEObject リンクされたOLEオブジェクト
msoLinkedPicture リンクされた図
msoMedia メディア
msoOLEControlObject OLEコントロールオブジェクト
msoPicture
msoPlaceholder プレースホルダ
msoScriptAnchor スクリプトアンカー
msoTAble
msoTextBox テキストボックス
msoTextEffect テキスト効果

Shapes

Shapesオブジェクトとは、スライドのすべてのShapeオブジェクトのコレクションである。

Indexは、最背面にある図形から順に番号が割り当てられる。通常は、図形を挿入すると最前面に配置されるので、挿入された順序に従って番号が割り当てられるが、図形の順序を入れ替えた場合はIndexも変わる。

Slide

Slideオブジェクトとは、スライドを表すオブジェクトである。

Slideオブジェクトのプロパティ
プロパティ 説明
Shapes スライドに配置されたすべての要素を表すShapesコレクションであり、読み取り専用である。

Slides

Slidesオブジェクトとは、プレゼンテーションのすべてのSlideオブジェクトのコレクションである。

TextFrame

TextFrameオブジェクトとは、Shapeオブジェクトのレイアウト枠を表すオブジェクトである。

TextFrameオブジェクトのプロパティ
プロパティ 説明
HasText 指定した図形に関連したテキストがあるかどうかを示すブール型(Boolean)の値であり、値の取得のみ可能。

TextFrame2

TextFrame2オブジェクトとは、Shapeオブジェクト又はShapeRangeオブジェクトのテキストフレーム表すオブジェクトである。

TextFrameオブジェクトのプロパティ
プロパティ 説明
TextRange 指定されたテキスト枠の中のテキストを表すTextRangeオブジェクトであり、値の取得のみ可能。

TextRange

TextRangeオブジェクトとは、図形に付加されたテキストを表すオブジェクトである。

TextFrameオブジェクトのプロパティ
プロパティ 説明
Text 指定したオブジェクトに含まれるテキストを表す文字列型(String)の値であり、値の取得および設定が可能。

PowerPoint VBAからExcelブックを操作する

既に開いているExcelブックのワークシートにアクセスする

Dim excelApplication As Object
Dim excelWorksheet As Object

On Error GoTo errorHandler

Set excelApplication = GetObject(Class:="Excel.Application")
Set excelWorksheet = excelApplication.ActiveWorkbook.ActiveSheet

excelWorksheet.Cells(1, 1).Value = "Hello world!"
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送