За скрипта: Ето един прост скрипт, който пропорционално мащабира таблица, за да съответства на текстовата колона, която я съдържа. Този скрипт работи с текущата таблица, но може лесно да бъде разширен, за да работи с всички таблици в документ или книга.
Получаване на данните: Кликнете с курсора в таблица, която трябва да бъде мащабирана. Ще трябва да съберете някаква основна информация, за да мащабирате таблицата правилно. Ето коментиран код за задаване на необходимите данни в променливи.
// The selected table.
Set vTbl = SelectedTbl;
// The current width of the table.
Set vTblWidth = vTbl.TblWidth;
// The width of the column containing the table.
Set vColWidth = vTbl.TextLoc.Object.InTextObj.Width;
Променливата vColWidth е ширината на колоната в многоколонна текстова рамка. Ако текстовата рамка има само една колона, ширината на колоната е равна на ширината на текстовата рамка. Ако имате множество колони, но искате да мащабирате таблицата до ширината на текстовата рамка, използвайте следните редове на мястото на последните два реда по-горе.
// The width of the text frame containing the table.
Set vColWidth = vTbl.TextLoc.Object.InTextFrame.Width;
Сега скриптът може да направи малко математика, за да определи колко да мащабира таблицата.
// Divide the column width by the table width.
Set vScaleFactor = vColWidth / vTblWidth;
Как да мащабирате таблицата?
Свойството TblWidth на таблицата е само за четене, така че не можете да го използвате за мащабиране на таблицата.
// This won't work.
Set vTbl.TblWidth = vTblWidth * vScaleFactor;
Вместо това трябва да промените ширината на всяка отделна колона на таблицата. Тези ширини се съхраняват в MetricList, наречен TblColWidths.
// Set a variable for the table column widths.
Set vWidths = vTbl.TblColWidths;
Metric list е списък със стойности за измерване. В този случай има член от списъка за всяка колона в таблицата. Ако таблицата има пет колони, списъкът TblColWidth ще съдържа пет члена.
Ключът към скрипта е да се премине през списъка с измервания, да се умножи всяко от тях с vScaleFactor и новата стойност да се постави обратно в списъка.
// Loop through the list and calculate each
// table column's new width.
Loop While(vCounter <= vWidths.Count) LoopVar(vCounter)
Init(1) Incr(1)
Get Member Number(vCounter) From(vWidths) NewVar(vWidth);
Set vNewWidth = vWidth * vScaleFactor;
Replace Member Number(vCounter) In(vWidths) With(vNewWidth);
EndLoop
Променливата vCounter ще се увеличава с 1 (Incr(1)), започвайки от 1 (Init(1)), през броя на членовете в vWidths (vWidths.Count). Всеки член ще бъде умножен с фактора за мащабиране и членът ще бъде заменен с новата стойност.
Вашата MetricList променлива vWidths сега съдържа правилните ширини за мащабиране на таблицата до ширината на колоната. Единственото останало нещо е да присвоите новите стойности на таблицата.
Set vTbl.TblColWidths = vWidths;