2015年1月10日土曜日

PerlからWin32::OLE経由でOfficeに引数を渡せず悩む

 PerlからWin32::OLE経由でWordを操作するさい、下図のようなメソッドがある。


これは、ワードの差込印刷において元データを指定するメソッド
OpenDataSourceメソッドにSQLを指定したいのだが、悩んだという話。

問題

$doc->MailMerge->OpenDataSource($database,,,,,,,,,,,,$sql);

ではうまくいかない。

VBAでは

ActiveDocument.MailMerge.OpenDataSource Name:= "T:¥temp.accdb", SQLStatement:="SELECT * FROM `基本データ`"

と記載することができる。

対応

ハッシュで指定し、リファレンスを渡すことで対応可能
my %param;
$param{"Name"} = $database;
$param{"SQLStatement"} = $sql;

$doc->MailMerge->OpenDataSource(¥%param);

所感

perlリファレンスにしっかり書いてあった。
かるーくショック。

0 件のコメント: