如何使用 Perl 修改 Word table 的列宽?

How to modify the column widths of a Word table using Perl?

将 Perl 与 Win32::OLE 模块结合使用 我正在尝试将 table 插入到 Microsoft Word 文档中,然后修改列宽。我可以毫不费力地插入 table,但事实证明修改列宽更加困难。创建宏并尝试将 VBA 翻译成 Perl 后,我得到的是:

my $word = Win32::OLE->new('Word.Application', sub {$_[0]->Quit;});
my $doc = $word->Documents->Open('myfile.doc');

### Code to find and select a tag to replace with a table goes here ###

my $table = $doc->Tables->Add($word->Selection->Range, 4, 4);
$table->Columns(1)->{PreferredWidthType} = wdPreferredWidthPoints;
$table->Columns(1)->{PreferredWidth} = 200;

不幸的是,这会在最后两行出现 "Can't use an undefined value as a HASH reference" 错误。我已经尝试了其他几种变体,但 none 有效,而 Google 也没有帮助。如果能回答如何执行此操作,我将不胜感激。

谢谢。

经过反复试验,我发现这样做是可行的:

$table->Rows(1)->Select;
$word->Selection->Columns(1)->{Width} = 200;

仅调整第 1 行列的大小就足够了,这会影响所有其他行。当你知道怎么做时,这很容易!