Acerca del script: Este es un script simple que escala proporcionalmente una tabla para ajustarla a la columna de texto que la contiene. Este script funciona con la tabla actual, pero puede ampliarse fácilmente para trabajar con todas las tablas de un documento o libro.
Obtención de los datos: Coloque el cursor en una tabla que necesite ser escalada. Necesitará recopilar información básica para escalar la tabla correctamente. A continuación, se muestra código comentado para asignar los datos necesarios a variables.
// La tabla seleccionada.
Set vTbl = SelectedTbl;
// El ancho actual de la tabla.
Set vTblWidth = vTbl.TblWidth;
// El ancho de la columna que contiene la tabla.
Set vColWidth = vTbl.TextLoc.Object.InTextObj.Width;
La variable vColWidth es el ancho de la columna en un marco de texto multicolumna. Si el marco de texto tiene una sola columna, el ancho de la columna es igual al ancho del marco de texto. Si tiene varias columnas pero desea escalar la tabla al ancho del marco de texto, utilice las siguientes líneas en lugar de las últimas dos líneas anteriores.
// El ancho del marco de texto que contiene la tabla.
Set vColWidth = vTbl.TextLoc.Object.InTextFrame.Width;
Ahora, el script puede realizar cálculos para determinar cuánto escalar la tabla.
// Divida el ancho de la columna entre el ancho de la tabla.
Set vScaleFactor = vColWidth / vTblWidth;
¿Cómo escalar la tabla?
La propiedad TblWidth de la tabla es de solo lectura, por lo que no puede utilizarla para escalar la tabla.
// Esto no funcionará.
Set vTbl.TblWidth = vTblWidth * vScaleFactor;
En su lugar, debe cambiar el ancho de cada columna individual de la tabla. Estos anchos se almacenan en una MetricList llamada TblColWidths.
// Establezca una variable para los anchos de columna de la tabla.
Set vWidths = vTbl.TblColWidths;
Una lista de métricas es una lista de valores de medida. En este caso, hay un miembro de la lista para cada columna de la tabla. Si la tabla tiene cinco columnas, la lista TblColWidth contendrá cinco miembros.
La clave del script es recorrer la lista de medidas, multiplicar cada una por vScaleFactor e insertar el nuevo valor de vuelta en la lista.
// Recorra la lista y calcule el nuevo ancho de
// cada columna de la tabla.
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
La variable vCounter se incrementará en 1 (Incr(1)) comenzando en 1 (Init(1)) hasta el número de miembros en vWidths (vWidths.Count). Cada miembro se multiplicará por el factor de escala, y el miembro será reemplazado por el nuevo valor.
Su variable MetricList vWidths contiene ahora los anchos correctos para escalar la tabla al ancho de la columna. Lo único que queda por hacer es asignar los nuevos valores a la tabla.
Set vTbl.TblColWidths = vWidths;