בירור | קוד מאקרו ליישור שני טורים בוורד
-
אני מעלה כאן גירסה מתוקנת של המאקרו שמיישר טורים בוורד.
עם שיפורים ניכרים בזכות החברים:
א. המאקרו מיישר את כל המסמך בלחיצה אחת, ותוך שניות בודדות!
ב. אין צורך להגדיר בכל פעם את המרווח המינימלי והמקסימלי בין פיסקאות.
אך מומלץ לעשות זאת בלחיצה על alt+0
הצלחה וברכה
הנה הקובץ
LineToLines4.dotניסיתי כעת את הקוד על קונטרס מעומד עם תוספים של @es0583292679 והקוד לא 'עובד' על המסמך.
מה עושים?? -
@שמעלקא-0 כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
@ששמעון הצדיק, אכן זה מרחיב רק בין פסקאות, ולא בין שורות.
באינדיזיין אפשר להגדיר טווחים למרווחים בין שורות, וגם למרווחים בין פסקאות [מרווח סטנדרט, מינימום ומקסימום].
ושמעתי שבתג אפשר עוד יותר מזה - להגדיר מה היחס בין מרווחי הפסקאות למרווחי השורות, כלומר מתי להעדיף לא לרווח רק פסקאות, אלא מעט בשורות ומעט בפיסקאות.
ככלות הכל וורד אינה תוכנה המיועדת לעימוד...אם המרווח הגדול מידי צורם לך,
היכנס שוב לטופס, הקטן את המקסימום, ואחר כך עבור על הקובץ והוסף מרווח שורות ידני.
[רק לפני כן בחר את כל המסמך, ותן לו מרווח פיסקאות של 8 נק' אחרי. בלשונית פריסה. זו הברירת מחדל בדר"כ].פקודת המאקרו שפותחת את טופס ההגדרות נקראת Open_my_userform חפש אותה ברשימת פקודות המאקרו.
בהצלחהדווקא יש כאן משהו שאתה יכול לשחק איתו על מרווח בין שורות:
הבעיה שזה עלול להיות יותר מדאי מסובך.... -
@ששמעון כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
@NykUser כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
ומסגרת הטקסט יכולה להיות חלק מהסגנון
איך עושים דבר כזה?
כך, סליחה אצלי הכל באנגלית
-
@אבי-0 כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
ניתן לעבור בלולאה על כל השורות עד שמוצא את השורה אם גובה כמו שהוגדר לגובה טור 1
דוגמא (גובה טור 1 בדוגמא מוגדר ב col1 )'הולך לשורה הראשונה בעמוד Set MyRange = ActiveDocument.Bookmarks("\page").range MyRange.SetRange Start:=MyRange.Start, End:=MyRange.Start MyRange.Select 'רד לשורה אחרונה בטור For i = 1 To NumLines Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:="" If col1 = Selection.Information(wdVerticalPositionRelativeToPage) Then Exit For ElseIf col1 > Selection.Information(wdVerticalPositionRelativeToPage) Then
-
@רפרם-בר-בר-פפא תודה על המענה זה כותב לי את השגיאה הבאה
אני חושב שמחמת שהשורה התחתונה בקוד שלך חסר משהו אחרי "THEN".
2. האם בבקשה אתה יכול להסביר יותר, מה אתה מתכוון שאני צריך להגדיר במקרו, ומה כוונתך ל"גובה טור 1"
תודה! -
@אבי-0
1 השגיאה היא חוסר ב סוף אם (End If) כעת תקנתי
`2 יש להוסיף אחרי המאקרו שהביא`` @NykUser שמגדיר הפרש בין טורים ומגדיר גובה טור 1 וגובה טור 2 והוספה שלי מגדירה בסיום המאקרו לעבור לשורה השווה לגובה טור 1 שהיא השורה האחרונה בטור הימני
להלן הקוד המלא אם החלק הראשון שבנוי על הקוד שהביא @NykUser ובתוספת שכתבתיPublic Sub שורה_אחרונה_בטור() 'בודק אם יש שני טורים If Selection.PageSetup.TextColumns.Count <> 2 Then MsgBox ("לא נמצאו 2 טורים"): Exit Sub 'עדכון מסך שקר Application.ScreenUpdating = False Dim WRange As range Dim NumLines, col1, col2, Ignore As Double 'מספר שורות כולל בשני טורים NumLines = ActiveDocument.Bookmarks("\page").range.ComputeStatistics(wdStatisticLines) ActiveDocument.Bookmarks("\page").range.Select Selection.MoveLeft Unit:=wdCharacter, Count:=1 'מגדיר אורך טור 1 For i = 1 To NumLines Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:="" If col1 > Selection.Information(wdVerticalPositionRelativeToPage) Then Exit For Else col1 = Selection.Information(wdVerticalPositionRelativeToPage) End If Next 'עובר לשורה ראשונה בעמוד Set MyRange = ActiveDocument.Bookmarks("\page").range MyRange.SetRange Start:=MyRange.Start, End:=MyRange.Start MyRange.Select 'רד לשורה אחרונה בטור For i = 1 To NumLines Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:="" If col1 = Selection.Information(wdVerticalPositionRelativeToPage) Then Exit For ElseIf col1 > Selection.Information(wdVerticalPositionRelativeToPage) Then End If Next End Sub
-
@רפרם-בר-בר-פפא זה עדיין כותב לי את השגיאה הבאה
2. האם זה מתאים למסמך שיש בו פסקאות שהמילה הראשונה היא ב"חלונות" [כמקובל בספרים תורניים] בשיטת המסגרת. -
@רפרם-בר-בר-פפא עובד מצויין!
ישר כח גדול! -
@אבי-0 כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
האם זה מתאים למסמך שיש בו פסקאות שהמילה הראשונה היא ב"חלונות" [כמקובל בספרים תורניים] בשיטת המסגרת.
יש איזשהו באג בוורד שכאשר המילה הראשונה בתוך מסגרת הוא מחשב את השורות כאילו הפיסקה הזאת נמצאת בנפרד, דהיינו כמו שהשורות היו מעוצבות במקרה שזה לא היה במסגרת. ולכן בכל הפקודה דלעיל עלולות לצוץ תקלות. (אמנם לא בהכרח, אבל זה קורה).
-
@רפרם-בר-בר-פפא
אני צריך אותך רגע לפרטי, אך אין לך פרטי כרגע, אודה ואשמח מאד אם תתקשר אליי ל: 0583292679 -
@רפרם-בר-בר-פפא זה לא קשור לפיסקאות אלא לשורות וכאשר אתה משתמש בפקודה זו:
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1
פעמים שזה לא יעבור למיקום שתכננת, דו"ק ותשכח.
-
כאן אתה יכול לראות שלמרות שבפועל ישנם 4 שורות הוורד מחשיב זאת כ-3 בלבד!