בירור | קוד מאקרו ליישור שני טורים בוורד
-
@נתן-מרדכי-שלום כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
@ששמעון משהו משונה בתמונה שהבאת, לפי דבריך שהפעלת את התוסך ליישור הטורים, הרווחים הגדולים יותר בין הפסקאות היו אמורים להיות בטור השמאלי הקצר יותר, ולא בטור הימני כפי שמופיע בתמונה
הם באמת בטור השמאלי.
אכן לא העלתי את כל התמונה עד סוף העמודים, בסוף הם יוצאים ישר. -
@es0583292679 כתב
הרעיון אצלי שניתן לעצבה את כל מילות הפתיח יחד, ולא רק גופן וגודל וכו', אלא גם גובה ועובי וכו'.
@נתן-מרדכי-שלום כתב
מצד שני בתוסף שלך המילה הראשונה בדרך כלל קופצת למעלה או למטה, ואז צריך להתחיל לסדר
הכי טוב להגדיר סגנון עבור המילה הראשונה, ומסגרת הטקסט יכולה להיות חלק מהסגנון, זה יעזור כאשר תרצה לשנות הגדרה כלשהי עבור המילה הראשונה עבור הקובץ כולו.
@האדם-החושב כתב
זה מה שאני מקבל:
@שמעלקא-0 כתב
לגבי שגיאת ההתקנה הזו, אמתין ל@NykUser שכתב עבורנו את חלק הקוד הזה. תודות לו!
הקוד שלי פשוט העתק את התבנית לנתיב ההפעלה. זה לא קשור לזה.
לחץ על Debug ושלח צילום מסך של איזו שורה עוררה את הבעיה. -
מצד שני בתוסף שלך המילה הראשונה בדרך כלל קופצת למעלה או למטה, ואז צריך להתחיל לסדר (זה אני הייתי במייל), משאי"כ בתוסף שלו שכנראה עובד חלק מהבחינה הזו.
אני לא מזמן שאלתי את @es0583292679 האם הוא יכול בתוסף שלו להגדיר שהמילה הראשונה תיצור סגנון לעצמה (כוונתי כשמפעילים את התוסף, והוא מעצב את המילה הראשונה, שהיא תהיה בסגנון) והוא ענה לי שאכן כמה אנשים ביקשו ממנו וכשיהיה לו זמן בעז"ה הוא יטפל בזה.
אולי הגיע הזמן......? -
אני מעלה כאן גירסה מתוקנת של המאקרו שמיישר טורים בוורד.
עם שיפורים ניכרים בזכות החברים:
א. המאקרו מיישר את כל המסמך בלחיצה אחת, ותוך שניות בודדות!
ב. אין צורך להגדיר בכל פעם את המרווח המינימלי והמקסימלי בין פיסקאות.
אך מומלץ לעשות זאת בלחיצה על 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 כתב בבירור | קוד מאקרו ליישור שני טורים בוורד:
האם זה מתאים למסמך שיש בו פסקאות שהמילה הראשונה היא ב"חלונות" [כמקובל בספרים תורניים] בשיטת המסגרת.
יש איזשהו באג בוורד שכאשר המילה הראשונה בתוך מסגרת הוא מחשב את השורות כאילו הפיסקה הזאת נמצאת בנפרד, דהיינו כמו שהשורות היו מעוצבות במקרה שזה לא היה במסגרת. ולכן בכל הפקודה דלעיל עלולות לצוץ תקלות. (אמנם לא בהכרח, אבל זה קורה).