لوری روشی آسان برای تعیین اینکه آیا یک پاراگراف به بیش از یک سطر می ریزد درخواست کرد. به نظر میرسد زمانی که لوری برچسبها را ادغام میکرد، اگر یک خط (پارگراف) روی برچسب بپیچد و به خط بعدی روی برچسب بپیچد، میخواست اندازه نقطه روی متن را کاهش دهد تا خط فقط همان یک خط را اشغال کند.
خطوط بسته بندی یک ویژگی بلادرنگ (و زمان چاپ) Word است. Word محاسبات داخلی را به طور مداوم انجام می دهد تا بفهمد چه چیزی روی صفحه نمایش داده شود یا چه چیزی روی کاغذ چاپ شود. در جایی که متن از یک خط به خط دیگر می پیچد، در واقع چیزی برای علامت گذاری نقطه پیچیدن وجود ندارد (همانطور که در برخی دیگر از واژه پردازها وجود دارد)، بنابراین چیزی برای جستجو یا یافتن وجود ندارد. علاوه بر این، ویژگی Find Word این کار را انجام می دهد. گزینه ای (ویژه یا غیر خاص) برای جستجوی چیزها و گفتن اینکه مطالب یافت شده در چند خط پخش می شود، ندارید.
می توان یک سری طولانی از عملیات جستجو و جایگزینی را انجام داد تا سعی شود خطوط بسیار طولانی را کشف کند. به عنوان مثال، می توانید این مراحل کلی را دنبال کنید:
- همه فضاهای موجود در یک سند ادغام شده را با ترکیبی از کاراکترهای استاندارد، مانند [s] جایگزین کنید.
- همه خط تیره ها را در یک سند ادغام شده با ترکیبی از کاراکترهای استاندارد، مانند [d] جایگزین کنید.
- اکنون، تمام پاراگرافهای سند از یک کلمه واحد تشکیل شدهاند.
- ابزار خط فاصله را اجرا کنید تا سند را به صورت دستی خط خط خطی کنید.
- هر زمان که Word خطی را پیدا کرد که باید خط خطی شود، می توانید اندازه نقطه آن خط را کاهش دهید.
- جایگزین های خود را دوباره انجام دهید، [s] و [d] را به فضاها و خط تیره های معمولی خود بازگردانید.
این ممکن است کمی پیچیده به نظر برسد، و اینطور است. اما نسبتاً خوب کار خواهد کرد، مگر اینکه بخواهید وارد نوشتن یک ماکرو شوید. (باور کنید یا نه، حتی اگر اغلب از ماکروها استفاده نمی کنید، این ماکرو خاص بسیار ساده تر از انجام مکرر مراحل بالا است.)
هنگامی که می خواهیم تصمیم بگیریم چگونه ماکرو را کنار هم بگذاریم، یک کشف غم انگیز در انتظار ما در VBA است. کاربران کهنه کار Word به یاد خواهند داشت که وقتی از ویژگی Word Count در Word استفاده می کنید، برنامه تعداد خطوط سند شما را به شما نشان می دهد. این بدان معناست که شما می توانید از VBA برای تعیین تعداد خطوط در یک انتخاب استفاده کنید. متأسفانه، ویژگی ReadabilityStatistics در VBA، آماری را برای تعداد خطوط برمیگرداند. این بدان معناست که آمار نشان داده شده در کادر محاورهای Word Count به صورت داخلی محاسبه میشود.
تنها راه حل ظاهری تکیه بر ویژگی Information برای wdFirstCharacterLineNumber است که شماره خط را برای اولین کاراکتر در یک انتخاب برمی گرداند. متأسفانه، wdLastCharacterLineNumber در VBA مشخص نشده است، بنابراین ماکرو باید برای اولین کاراکتر یک پاراگراف انتخابی انجام دهد، آن را با انتخابی از آخرین کاراکتر در یک پاراگراف مقایسه کند و ببیند آیا همان دو شماره خط برگردانده شده است یا خیر. اگر آنها نباشند، می توان اندازه نقطه پاراگراف را کاهش داد و محاسبه دیگری انجام داد.
ماکرو VBA زیر، ParaforceOneLine، این فرآیند را انجام می دهد. هر پاراگراف در یک سند را بررسی میکند و اگر پاراگراف معینی روی یک خط اجرا شود، اندازه نقطه آن پاراگراف خاص کاهش مییابد تا زمانی که بتواند در یک خط قرار گیرد.
Sub ParaForceOneLine()
Dim objPara As Paragraph
Const ChangeSize = 0.5
For Each lobjPara In ActiveDocument.Paragraphs
With objPara.Range
While .Information(wdFirstCharacterLineNumber) <> _
.Characters(Len(.Text)).Information(wdFirstCharacterLineNumber)
.Font.Size = .Font.Size — ChangeSize
Wend
End With
Next objPara
End Sub