OfficeLink

Home

Blog

● OfficeLink とは?

OfficeLinkは、簡単なマクロ言語を実行するMS Officeのアドインです。マクロ言語のソースを「コメント」として記述することにより、MS Officeと無理なく同居します。制御の範囲は限定的ですが、VBAでは意外に面倒なOffice製品同士のリンクに重点を置いています。

OfficeLink for PowerPoint(=OfficeLink PPT)は、OfficeLink の第一弾で、PowerPoint の図形貼り付け環境を改善します。Excel との連携により、Excel 上の表やグラフを自在に貼り付けることが可能であり、資料作成の自動化に貢献します。

PowerPoint では様々なオブジェクトを貼り付けながら作業しますが、オブジェクトを貼りながらレイアウトを決めるのは地味な作業でありストレスが溜まります。そこで「予めレイアウトを決めてからオブジェクトを貼る」という発想をしました。例えば四角形などで枠を決めておき、その枠の大きさに合わせてオブジェクトを貼るのです。

貼り付けるオブジェクトは Excel 上で展開・管理し、PowerPoint ではレイアウトと文章作成に専念する。貼り付ける作業は OfficeLink で自動化するという具合です。


● 機能

・オブジェクトの名前編集

普段の編集では気にしないオブジェクトの名前編集ですが、ソフトの連携には必須です。PowerPoint 2003 まではプログラムの支援が必須でしたが、PowerPoint 2007 からは標準でオブジェクトの名前編集が可能になりました。OfficeLink PPT には、簡易編集機能があります。

・Fit 貼り付け

クリップボード上の図形を、選択中の Shape オブジェクトのサイズに自動的に合わせて貼り付けます。貼り付けたオブジェクトは、メタファイル or 画像形式に変換され、Excel のグラフ等のリンク情報は削除されます。

・マクロ実行

OfficeLink の中心機能です。コメント欄に記述されたマクロを実行します。一般的な四則演算、論理演算、変数、条件分岐、繰り返し制御といった機能を提供します。Excel 操作命令より、Excel上のオブジェクトを PowerPoint 上の Shape オブジェクトに「Fit貼り付け」を実行します。Excel のセルを参照&変更する事ことにより動的に表やグラフを抽出します。文字列置換により Excel のセル値を PowerPoint のテキストとすることが可能です。

 

● OLL(Office Link Language)

OfficeLink 用のマクロ言語です。言語といえるほど立派なものではありませんが、便宜上名付けました。

C言語風のスタイルですが、数種類の内部関数しか持たず、ユーザー関数は定義できません。
変数は宣言なしで使用可能で、数値と文字列が使えます。
PowerPoint のコメント欄にソースを記述する関係上、コメント単位での実行になりますが、
一回の実行単位で変数は共用されます。
※先に定義された変数を引き継ぐという意味です

特徴的なのは、'@'演算子です。
A = @"a1"; とすることにより、オープン中の Excel Worksheet の A1 の値を変数 A に代入します。
逆に @"a1" = 123; とすれば、Worksheet のセル A1 を 123 にする事ができます。
つまり、Excel の任意の Cell を参照・更新出来る訳です。
これにより、 Excel 上のオブジェクトを任意に選択し、PowerPoint に貼り付けることが可能です。

 

○ 文法

--------------------------------------------------------------------------------------
start: stmts;

stmts
:
| stmts stmt
;

stmt
: ID '=' expr ';'
| assign ';'
| function ';'
| if_prefix stmt
| if_prefix stmt ELSE stmt
| while_prefix stmt
| '{' stmts '}'
;

if_prefix
: IF '(' cond ')'
;

while_prefix
: WHILE '(' cond ')'
;

cond
: cond '&&' cond
| cond '||' cond
| expr '==' expr
| expr '>' expr
| expr '>=' expr
| expr '<' expr
| expr '<=' expr
| expr '!=' expr
| expr
;

assign
: '@' expr '=' expr
;

expr
: expr '&' expr
| expr '|' expr
| expr '^' expr
| expr '+' expr
| expr '-' expr
| expr '*' expr
| expr '/' expr
| '-' expr %prec '-'
| '!' expr %prec '!'
| '@' expr %prec '@'
| '(' expr ')'
| NUMBER
| STRING
| ID
;

function
: FUNCID '(' params ')'
;

params
:
| expr
| params ',' expr
;
--------------------------------------------------------------------------------------
文法表には現れていませんが、'//'~行末までがコメントです。
PowerPoint コメントの一行目を //OfficeLink と記述することにより、インタープリタが反応します。
変数、内部関数とも大文字・小文字は区別しません。

 

○内部関数

・OpenExcel(path)

path で指定される Excel ファイル を Open する。

・CloseExcel()

現在 Open 中の Excel ファイルを閉じる。

・SelectSheet(sheetname)

現在 Open 中の Workbook で、sheetname で指定される Worksheet をアクティブにする。

・Replace(str1, str2)

アクティブ状態のスライド上にある文字列 str1 を、文字列 str2 で置換する。

・SetExcelObject(pObj, eObj)

pObje で指定される PowerPonint オブジェクトに合わせて、
eObj で指定される Excel オブジェクトを貼り付ける。

・SetPictureFile(pObje, path)

pObje で指定される PowerPonint オブジェクトに合わせて、
path で指定される画像ファイルを貼り付ける。

・Print(str [,title])

文字列 str を MessageWindow で表示する。
title がある場合は、タイトル表示する。
デバッグの友。


プログラム経験者の方にはサンプルを見てもらった方が早いです。
サンプルフォルダー中の demo.pptx を参照してください。