Informazioni sullo script: Di seguito è riportato uno script semplice che scala proporcionalmente una tabella per adattarla alla colonna di testo che la contiene. Questo script funziona con la tabella corrente ma può essere facilmente ampliato per funzionare con tutte le tabelle in un documento o libro.
Acquisizione dei dati: Fare clic con il cursore in una tabella che deve essere scalata. Sarà necessario raccogliere alcune informazioni di base per scalare correttamente la tabella. Di seguito è riportato il codice commentato per impostare i dati necessari nelle variabili.
// La tabella selezionata.
Set vTbl = SelectedTbl;
// La larghezza corrente della tabella.
Set vTblWidth = vTbl.TblWidth;
// La larghezza della colonna che contiene la tabella.
Set vColWidth = vTbl.TextLoc.Object.InTextObj.Width;
La variabile vColWidth è la larghezza della colonna in una cornice di testo a più colonne. Se la cornice di testo ha una sola colonna, la larghezza della colonna è uguale alla larghezza della cornice di testo. Se si hanno più colonne, ma si desidera scalare la tabella alla larghezza della cornice di testo, utilizzare le righe seguenti al posto delle ultime due righe sopra riportate.
// La larghezza della cornice di testo che contiene la tabella.
Set vColWidth = vTbl.TextLoc.Object.InTextFrame.Width;
Ora, lo script può eseguire alcuni calcoli per determinare quanto scalare la tabella.
// Dividere la larghezza della colonna per la larghezza della tabella.
Set vScaleFactor = vColWidth / vTblWidth;
Come scalare la tabella?
La proprietà TblWidth della tabella è in sola lettura, quindi non è possibile utilizzarla per scalare la tabella.
// Questo non funzionerà.
Set vTbl.TblWidth = vTblWidth * vScaleFactor;
Invece, è necessario modificare la larghezza di ogni singola colonna della tabella. Queste larghezze sono archiviate in una MetricList denominata TblColWidths.
// Impostare una variabile per le larghezze delle colonne della tabella.
Set vWidths = vTbl.TblColWidths;
Una metric list è un elenco di valori di misurazione. In questo caso, c'è un membro dell'elenco per ogni colonna della tabella. Se la tabella ha cinque colonne, l'elenco TblColWidth conterrà cinque membri.
La chiave dello script è scorrere l'elenco delle misurazioni, moltiplicare ognuna per vScaleFactor e reinserire il nuovo valore nell'elenco.
// Scorrere l'elenco e calcolare la nuova larghezza
// di ogni colonna della tabella.
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 variabile vCounter si incrementerà di 1 (Incr(1)) a partire da 1 (Init(1)) fino al numero di membri in vWidths (vWidths.Count). Ogni membro verrà moltiplicato per il fattore di scala e il membro verrà sostituito con il nuovo valore.
La variabile MetricList vWidths contiene ora le larghezze corrette per scalare la tabella alla larghezza della colonna. L'unica cosa che rimane da fare è assegnare i nuovi valori alla tabella.
Set vTbl.TblColWidths = vWidths;