编辑:如果你有一个VBA的例子,我会接受它。我只是想了解如何将Range对象与Tables集合一起使用来复制和粘贴多个没有循环的表。换句话说,如何使用Tables集合来指定范围1..lastTable?如果我能看到一个有效的VBA示例,我将介绍VBA - > Perl转换。如何在Word中复制和粘贴一系列表格?
我正在尝试使用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();
原来代码中使用段落,没有桌子,所以我想有些错误是文物从代码(或更可能我不理解码)。
我的建议是尝试手动执行任务,同时录制宏,然后看所产生的VBA子程序。您应该能够将其推广并将其转换为Perlish,而不会有太多麻烦。 – 2009-09-16 15:51:44
使用这种方法只是告诉我如何使用Selection来获得一个表格,而如果我尝试选择多个表格,宏写入的也是它们之间的文本,这不是我所追求的。 – romandas 2009-09-17 12:48:30