参考までに、私は Perl と Win32::OLE を使用していますが、エラーは Word VBA のものです。
Perl の Win32::OLE モジュールを使用して、Word でテーブルを作成し、その特定の要素をフォーマットしようとしています。テーブル (15 x 3) を作成し、(2, 1) から (14, 3) までのセル、つまり上行と下行を除くすべてのセルを指す範囲オブジェクトを正常に作成しました。
次に、OutsideLineStyle と InsideLineStyle を設定し、境界線を有効にしましたが、結果のテーブルにはテーブル内に垂直方向の境界線がありません。テーブル全体と行間には境界線がありますが、列間には境界線がありません。
wdBorderVertical を設定してこれを修正しようとしましたが、「要求されたコレクションのメンバーが存在しません」というエラーが発生します。理由はわかりません。
これが私のコードです:
$cells = $document->Range( $table->Cell(2, 1)->Range->Start, $table->Cell(14, 3)->Range->End );
$cells->Borders->{OutsideLineStyle} = wdLineStyleSingle;
$cells->Borders->{OutsideLineWidth} = wdLineWidth150pt;
$cells->Borders->{InsideLineStyle} = wdLineStyleSingle;
$cells->Borders->{InsideLineWidth} = wdLineWidth150pt;
$cells->Borders->Item(wdBorderRight)->{LineStyle} = wdLineStyleSingle;
$cells->Borders->Item(wdBorderRight)->{LineWidth} = wdLineWidth150pt;
# The next two lines generate the error.
$cells->Borders->Item(wdBorderVertical)->{LineStyle} = wdLineStyleSingle;
$cells->Borders->Item(wdBorderVertical)->{LineWidth} = wdLineWidth150pt;
$cells->Borders->{Enable} = 1;
セル範囲の wdBorderVertical は存在しませんか? 選択やループを使用せずにこれを実行しようとしています.Rangesが特別に使用されているように見えるので(おそらく私は間違っています)、不要なループなどを避けることができ、単一の選択に対して複数のRangeを使用できます.