编辑:如果你在 VBA 中有一个例子,我会接受它。我只是想了解如何将 Range 对象与 Tables 集合一起使用来复制和粘贴多个表而不循环。换句话说,如何使用 Tables 集合指定 1..lastTable 的范围?如果我能看到一个有效的 VBA 示例,我将处理 VBA --> Perl 转换。
我正在尝试使用 Perl 的Win32::OLE模块(通过 Dave Roth 的优秀书籍)来自动化一些我需要在一些 Word 文档上重复执行的任务。但是,这本书(以及大多数 Web 示例)倾向于使用 Excel 作为示例,因此我不确定如何使用 Tables 集合对象有效地复制和粘贴。
这是我的代码片段:
my $originalDoc = $MSWord->Documents->Open('C:\Perl\testDocument.doc');
my $newDoc = $MSWord->Documents->Add;
my $selection = $MSWord->Selection(); # this may be spurious
my $Count = int( $originalDoc->Tables()->{Count} );
my $range = $originalDoc->Tables()->Range( { Start => $originalDoc->Tables(1)->{Range}->{Start},
End => $originalDoc->Tables($Count)->{Range}->{End}
} );
$range->Copy();
$newDoc->Range()->Paste();
原始代码使用的是段落,而不是表格,所以我假设一些错误是该代码的产物(或者更可能是我不理解该代码)。