РЕДАКТИРОВАТЬ: Если у вас есть пример в VBA, я возьму его. Я просто пытаюсь понять, как использовать объект Range с коллекцией Tables для копирования и вставки нескольких таблиц без зацикливания. Другими словами, как я могу указать диапазон 1..lastTable, используя коллекцию Tables? Если я увижу работающий пример VBA, я поработаю над преобразованием VBA -> Perl.
Я пытаюсь использовать модуль Perl Win32 :: OLE (через превосходную книгу Дэйва Рота), чтобы автоматизировать пару задач, которые мне нужно многократно выполнять в некоторых документах Word. Тем не менее, книга (и большинство веб-примеров) имеет тенденцию использовать 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();
В исходном коде использовались параграфы, а не таблицы, поэтому я предполагаю, что некоторые ошибки являются артефактами этого кода (или, скорее всего, моим непониманием этого кода).