Используя Perl с модулем Win32::OLE, я пытаюсь вставить таблицу в документ Microsoft Word, а затем изменить ширину столбцов. Я могу вставить таблицу без каких-либо проблем, но изменение ширины столбцов оказывается более сложным. После создания макроса и попытки перевести 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;
К сожалению, это дает ошибку «Невозможно использовать неопределенное значение в качестве ссылки HASH» в последних двух строках. Я пробовал несколько других вариантов этого, но ни один из них не работал, и Google тоже не помог. Я был бы очень признателен за ответ о том, как это сделать.
Спасибо.
Data::Dumper
для печати$table -> Columns(1)
, потому что эта ошибка подразумевает, чтоColumns(1)
не определено. - person Sobrique   schedule 05.10.2015$Data::Dumper::MaxDepth
, особенно при работе с объектами приложений Microsoft, в которых обычно каждый отдельный объект указывает на объект приложения, который содержит все. Win32::OLE по умолчанию не создает уникальные объекты и просто использует вашу память, переделывая один и тот же объект приложения снова, и снова, и снова. - person Axeman   schedule 05.10.2015_Unique
при загрузке модуля: search.cpan.org/~jdb/Win32-OLE-0.1712/lib/Win32/OLE.pm#_Unique - person Axeman   schedule 05.10.2015