PerlでのEXCELブック作成プログラム雛型
以下のサンプルは、Perlのロジックで2次元配列データ作成(行列データ)し、それをEXCELシートのセルへ格納しています。
尚、EXCELの他の機能は、他のVBA系の本を参照のこと。VBAで出来ることは、以下のような感じで、たぶん、ほとんどすべて出来るはずです。
use strict; use Win32::OLE; # 指定タイプライブラリのコンスタントが参照可能 use Win32::OLE::Const 'Microsoft Excel'; # エラー時に本処理を中止し、Perlがエラーメッセージを出力し、本プロセスが終了する Win32::OLE->Option(Warn => 3); # EXCELブック指定(パスや名前は任意) my $ExcelFile = 'D:\test_book.xls'; # 2次元配列データ作成(行列データ) my @data = ( [ qw(00 01 02) ], [ qw(10 11 12) ], [ qw(20 21 22) ]); &putData2Excel($ExcelFile, @data); sub putData2Excel{ my ($FilePath, @AoA) = @_; my ($excel, $i, $j, $n); # EXCEL使用可能かのチェック eval { Win32::OLE->GetActiveObject('Excel.Application'); }; if ($@) { die "Excelが入っていません。 $@"; } $excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $book = $excel->Workbooks->Add; # ワークシートの作成 my $sheet = $book->Worksheets(1); for $i ( 0 .. $#AoA ) { for $j ( 0 .. $#{$AoA[$i]}) { $sheet->Cells($i+1, $j+1)->{Value} = $AoA[$i][$j]; } } unlink $FilePath; $book->SaveAs($FilePath); # ファイルを保存する $book->Close(); $excel->Quit(); }