شریل به طور معمول اسنادی را ایجاد می کند که جداول بسیار زیادی در آنها وجود دارد. هر یک از جداول از این نظر سازگار هستند که طرح کلی یکسانی دارند. (هر کدام شامل همان تعداد ستون است که هر ستون حاوی اطلاعات یکسانی است.) شریل به دنبال راهی است تا مطمئن شود که عرض ستون ها در همه جداول مطابقت دارند.
راه حل بستگی به زمان ایجاد جداول دارد. اگر سند جدید است، ایجاد جداول به روشی ثابت نسبتاً آسان است. همانطور که در WordTips دیگر توضیح داده شد (و من در اینجا به آن نمی پردازم)، می توانید جداول استاندارد خود را به عنوان ورودی های بلوک ساختمان ذخیره کنید یا یک سبک جدول ایجاد کنید که نحوه نمایش جدول شما را مشخص کند. در صورت نیاز، به سادگی وارد کنید. ورودی بلوک ساختمان یا سبک را اعمال کنید، و جدول همانطور که می خواهید ظاهر می شود.
اگر سند شما از قبل ایجاد شده باشد و شما به سادگی بخواهید یکپارچگی را در جداول موجود در سند اعمال کنید، راه حل کمی بیشتر درگیر است. در این صورت، راه حل استفاده از ماکرو برای تغییر عرض ستون ها است.
می توان یک ماکرو ایجاد کرد که به سرعت از هر جدول در یک سند عبور کند و هر ستون در جدول را با عرض یکسان کند، به این ترتیب:
Sub SetColumnWidths1()
Dim t As Table
For Each t In ActiveDocument.Tables
t.Columns.Width = InchesToPoints(2)
Next t
End Sub
با این حال، احتمال اینکه نمیخواهید هر ستون 2 اینچ عرض داشته باشد، خوب است. احتمالاً میخواهید هر ستون یک عرض خاص و متفاوت از ستونهای دیگر داشته باشد. تکرار زیر ماکرو این احتمال را نشان میدهد:
Sub SetColumnWidths2()
Dim t As Table
For Each t In ActiveDocument.Tables
t.Columns(1).Width = InchesToPoints(2)
t.Columns(2).Width = InchesToPoints(2.5)
t.Columns(3).Width = InchesToPoints(3)
Next t
End Sub
اشکال چنین ماکرویی این است که باید عرض هر ستون را در کدنویسی مشخص کنید. همچنین، اگر یک جدول غیرعادی در سند خود داشته باشید (تعداد ستونهای آن به اندازه تمام جدولهای دیگر شما نیست)، ماکرو بیاحتیاط سعی میکند عرض ستونها را تنظیم کند.
بنابراین، یک رویکرد بهتر ممکن است این باشد که یک جدول "مدل" در سند خود داشته باشید و سپس تمام جداول دیگر خود را به گونه ای تنظیم کنید که از عرض ستون های آن جدول استفاده کنند. یک روش آسان این است که به صورت دستی عرض ستون های اولین جدول در سند را قالب بندی کنید، سپس ماکرو آن جدول را بررسی کند و از آن به عنوان الگوی بقیه ستون های جدول استفاده کند.
Sub SetColumnWidths3()
Dim t As Table
Dim c As Column
Dim ccnt As Integer
Dim w() As Single
Dim J As Integer
Dim K As Integer
Set t = ActiveDocument.Tables(1)
ccnt = t.Columns.Count
ReDim w(ccnt)
J = 0
For Each c In t.Columns
J = J + 1
w(J) = c.Width
Next c
For J = 2 To ActiveDocument.Tables.Count
Set t = ActiveDocument.Tables(J)
If t.Columns.Count = ccnt Then
For K = 1 to ccnt
t.Columns(K).Width = w(K)
Next K
Endif
Next J
End Sub
این ماکرو تعداد ستون های جدول اول را بررسی می کند (تخصیص مقدار به متغیر ccnt) و سپس به عرض هر یک از آن ستون ها نگاه می کند (مقادیر را به آرایه w اختصاص می دهد). سپس از بقیه جداول سند عبور می کند و اگر تعداد ستون های جدول با تعداد متغیر ccnt مطابقت داشته باشد، عرض هر ستون را با عرض های ذخیره شده در آرایه w تنظیم می کند. نتیجه این است که هر جدول در سند (خوب، حداقل آنهایی که تعداد ستونهای آنها برابر با جدول اول است) عرض ستونهای یکسانی دارند.
در اینجا یک مشکل بالقوه وجود دارد: اگر جداول در سند شما به هر طریقی از سلولهای ادغام شده استفاده میکنند، میتواند نتایجی را که به دست میآورید خراب کند. در آن مثال، شما می خواهید سند خود را قبل از اجرای ماکرو ذخیره کنید. به این ترتیب می توانید نتایج را به صورت بصری بررسی کنید و سپس در صورت لزوم به سند ذخیره شده برگردید.