2009-09-30 3 views
1

FYI, я использую Perl и Win32 :: OLE, но ошибка - это VBA Word.Почему не существует wdBorderVertical при использовании диапазона ячеек вместо выделения?

Используя модуль Perl Win32 :: OLE, я пытаюсь создать таблицу в Word и отформатировать некоторые ее элементы. Я создал таблицу (15 x 3) и успешно создал объект диапазона, указывающий на ячейки от (2, 1) до (14, 3), то есть все ячейки, кроме верхних и нижних строк.

Затем я установил OutsideLineStyle и InsideLineStyle и включил границы, но итоговая таблица не имеет вертикальных границ внутри таблицы. Существует граница вокруг всей таблицы и границы между строками, но не между столбцами.

Я попытался исправить это, установив wdBorderVertical, но я получаю сообщение об ошибке «Запрошенный член коллекции не существует». Я не знаю, почему.

Вот мой код:

$cells = $document->Range($table->Cell(2, 1)->Range->Start, $table->Cell(14, 3)->Range->End); 
    $cells->Borders->{OutsideLineStyle} = wdLineStyleSingle; 
    $cells->Borders->{OutsideLineWidth} = wdLineWidth150pt; 
    $cells->Borders->{InsideLineStyle} = wdLineStyleSingle; 
    $cells->Borders->{InsideLineWidth} = wdLineWidth150pt; 
    $cells->Borders->Item(wdBorderRight)->{LineStyle} = wdLineStyleSingle; 
    $cells->Borders->Item(wdBorderRight)->{LineWidth} = wdLineWidth150pt; 

# The next two lines generate the error. 
    $cells->Borders->Item(wdBorderVertical)->{LineStyle} = wdLineStyleSingle; 
    $cells->Borders->Item(wdBorderVertical)->{LineWidth} = wdLineWidth150pt; 

    $cells->Borders->{Enable} = 1; 

Не существует wdBorderVertical для диапазонов ячеек? Я пытаюсь сделать это без использования выбора или цикла, поскольку кажется (и, возможно, я ошибаюсь), что Диапазоны специально используются, поэтому вы можете избежать ненужных циклов и т. П., И вы можете использовать несколько диапазонов по сравнению с одним выбором.

ответ

1

Возможно, это действительно так, что wdBorderVertical не существует для диапазонов ячеек. Ни один из результатов поиска, которые я нашел для кода, используя wdBorderVertical, применяется к диапазонам ячеек, обычно только к ячейкам или таблицам. Возможно, вам придется использовать цикл, чтобы сделать это так, как вы пожелаете.

+0

Хм .. бы она существует, если я петельные через ряды? – romandas

+0

Я не знаю :(... Я просто пытался исследовать ответ, и я только вижу, что он применяется к 'Таблице' и 'Item' .... –

+0

+1 и принят. существовать. – romandas

0

Я не знаю Perl, но я думаю, что вам нужно Cells член Range, например, что-то вроде этого для вашей линии # 1:

$cells = $document->Range($table->Cell(2, 1)->Range->Start, $table->Cell(14, 3)->Range->End)->Cells; 
Смежные вопросы