編輯:如果你有一個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