בירור | קוד מאקרו ליישור שני טורים בוורד
-
איך יכול להיות?
כל מה שהתוסף עושה, הוא עושה באופן ידני, (בתחתרות בינינו הוא עובד יותר מהר ממני, שאני עובד עם תוספים!)
נו נו...
ככה זה נשמע.... אם אתה אומר שצריך תוסף שכולל הכל, בעוד שישנם כמה מצויינים בשוק..... אדרבה אולי תחכים אותי במשהו....
-
-
@תודה-רבה-4
ללא מאקרו כללף מכניס צורה ריקה, מיישר טם טאב או עושה מעבר רציף לשורה תחתונה ואז ממרכז אותה וכן הלאה..... -
-
@תודה-רבה-4
כן, הוא מיומן... -
@שמעלקא-0 איך זה נשמע פה לכא', כסף משמעותי ספק גדול אם תרוויח. אבל אם תעשה חסד ודאי תרוויח!
ועכ"פ, אשאל רק דבר אחד, האם אתה יכול להעלות לי בבקשה, את פקודות המאקרו שקורא כמה נקודות מרווח יש אחר הפיסקה המסומנת ומגדיל את המרווח הזה (שאחר אותה הפיסקה) בנקודה אחת או שתיים לפי מה שאני אקבע במאקרו (אני מסתדר עם אנגלית).
תודה! -
המאקרו הזה עובד כך:
באופן כללי וורד מיישר את הטקסט אוטומטית. אלא שלפעמים נותרים פערים בין הטורים.
המאקרו בודק את הדף, ומגלה היכן מסתיים כל טור.
אם יש פער ביניהם - הוא מגדיל את המרווח שבין הפסקאות.
לא התעסקתי (בינתיים) עם בקרת שורות מיותמות, ולא עם מרווחים בין שורות או תווים. רק עם מרווחים בין פסקאות [נסו זאת ידנית בלשונית "פריסה"].
ישנה אפשרות להגדיר מרווח מינימום ומקסימום בין פסקאות, על מנת שלא יווצר רווח גדול מידי.
אם יש באמצע העמוד כותרת רחבה, שחותכת את העמוד לשנים, המאקרו מיישר את שני הטורים בחצי הדף העליון, ואחר כך בנפרד את שני הטורים שבחצי הדף התחתון, מתחת לכותרת.
אם הגדלת המרווח בעמודה הקצרה לא מספיקה, המאקרו מצמצם את המרווחים בעמודה השניה.
בעמוד האחרון, אם יש רק טור ימני ואין טקסט בשמאל, הוא מיישר אותו בשני טורים כיאות.
זהו קוד כתוב, מושקע וארוך מאד, לא הקלטה של מאקרו... -
@שמעלקא-0 אני מבין, רק אני שאלתי רק דבר אחד, ב"משלים לוורד" אחד המאקרויים שם, יודע לקרוא את הריווח שאחר הפיסקה המסומנת, ואז יכול להגדיל אותו בנק' אחת, וכמובן המאקרו זו חסום כמו כל המשלים לוורד. חיפשתי בVSB פקודה שמתאימה לעשות את זה ולא מצאתי, אני מבין שלך יש הרבה נסיון בזה, האם אתה יכול לעזור?
תודה! -
@שמעלקא-0
אני כאחד שיוצא לו די הרבה להיפגש עם אברכים פשוטים שמעמדים בוורד. חושב בהחלט שאנשים יסכימו לשלם 50 שקל עבור תוסף שיתן את האופציה הזו.
במיוחד אחרי שאת המילה ראשונה חלון ומירכוז שורה אחרונה כבר יש חינמי. נשאר רק כותרות שמי שיודע מצליח בלי תוסף, ויישור טורים שזה בעצם העבודה המעצבנת........
אגב אם אני מבין ממך נכון המאקרו שלך רץ בבת אחת על כל המסמך ומסדר אותו! בשונה מהמאקרו של רחמים שלא מסדר את המסמך אלא רק נותן לך לראות כמה נקודות חסר בכל טור ומוסיף לחצנים מהירים להוסיף נקודות וכדו'.
תקן אותי אם אני טועה.
ואם זה כך לדעתי זה ירוץ ממש. (אלא א"כ אנשים אוהבים לתקן כל עמוד לבד כדי שיוכלו לראות האם עדיף להגדיל מרוח בין פסקאות או בין שורות וכו'. -
@גבאי אמר בבירור | קוד מאקרו ליישור שני טורים בוורד:
בשונה מהמאקרו של רחמים שלא מסדר את המסמך אלא רק נותן לך לראות כמה נקודות חסר בכל טור ומוסיף לחצנים מהירים להוסיף נקודות וכדו'.
תקן אותי אם אני טועה.המקרו של רחמים רץ על כל המסמך באופן אוטומטי ומסדר את הכל.
-
@תודה-רבה-4 אמר בבירור | קוד מאקרו ליישור שני טורים בוורד:
@מניין @גבאי יש כמה תוספים של רחמים, וכמה גירסאות. אולי תעדכנו על מה כל אחד מדבר.
מדובר על התוסף של רחמים 'בתשלום' שנקרא 'יישור טורים'.
-
-
-
פוסט זה נמחק!
-
המקרו של רחמים רץ על כל המסמך באופן אוטומטי ומסדר את הכל.
יש כמה תוספים של רחמים, וכמה גירסאות. אולי תעדכנו על מה כל אחד מדבר.
למיטב ידיעתי (כך בדקתי לפני קצת יותר משנה) יש לרחמים תוסף אחד בתשלום שמזהה בכל עמוד כמה נקודות חסר, ואז ע"י לחיצה על כפתור מסויים הוא מיישר, אבל לא ידוע לי כלל שיש משהו שמסדר את כל המסמך בבת אחת.
עיין כאן -
@poker אמר בבירור | קוד מאקרו ליישור שני טורים בוורד:
המקרו של רחמים רץ על כל המסמך באופן אוטומטי ומסדר את הכל.
למיטב ידיעתי (כך בדקתי לפני קצת יותר משנה) יש לרחמים תוסף אחד בתשלום שמזהה בכל עמוד כמה נקודות חסר, ואז ע"י לחיצה על כפתור מסויים הוא מיישר, אבל לא ידוע לי כלל שיש משהו שמסדר את כל המסמך בבת אחת.
עיין כאןאני מדבר מניסיון, כי פשוט יש לי את התוסף, וגם עיינתי בקישור ששלחת, וגם שם תראה שיש אפשרות שנקראת 'יישר מכאן והלאה' [ראה תמונה].
-
ובכן,
אני מעלה כאן קובץ ובו פקודת מאקרו ליישור שני טורים בוורד.
עומדים בעמוד הרצוי, מפעילים את המאקרו, והטורים מתיישרים.
המאקרו בודק את מבנה העמוד, ומוסיף מרווח בין פיסקאות כדי להגיע ליישור מדוייק בין הטורים.הנה הקובץ:
[מעדכן את הפוסט: בהמשך השרשור יש גירסה מעודכנת יותר של הקובץ]
LineToLines1.dotתודה ל @NykUser שכתב את הפוסט הזה, שהועיל לי בענין ההתקנה.
לחברים המומחים ב-VBA:
הקובץ הוא גירסה ראשונית, שעובדת יפה.
אך יש כמה דברים שעשויים לתקוע את הקוד, ואבקש את עזרת המומחים בשיפורו:
א. כדי שהטופס לא יפתח בכל הפעלה, יש צורך לשמור את הגדרות המשתמש האישיות במקור חיצוני מחוץ לקוד. אינני יודע איך עושים זאת.
ב. האם יש פונקציה שבודקת האם אני בטור הראשון או השני.
ג. האם יש פונקציה פשוטה שמחזירה את מספר הפיסקה שלי.
ד. האם יש פונקציה שמובילה אותי לשורה האחרונה בעמוד.
הדברים האלו יעשו את הקוד למדוייק יותר בכל סוגי הקבצים והעמודים, וידלג גם על המכשולים שמציבים לו התוספים הפיראטיים שמניחים מילה ראשונה בתוך מסגרת כדי ליצור חלון, וכיוצא באלו.
בתודה מראש -
תייגת אותי, קפצתי לביקור אחרי הרבה זמן שלא הייתי כאן, מצאתי גם הרשום בקוד שלך "תודה למי שיצר את קטע הקוד הזה ואיני יודע מיהו", כתבתי הקטע ואני שמח שזה עוזר.
לחברים המומחים ב-VBA:
הקובץ הוא גירסה ראשונית, שעובדת יפה.
אך יש כמה דברים שעשויים לתקוע את הקוד, ואבקש את עזרת המומחים בשיפורו:אשמח לעזור למי שעוזר לאחרים!
א. כדי שהטופס לא יפתח בכל הפעלה, יש צורך לשמור את הגדרות המשתמש האישיות במקור חיצוני מחוץ לקוד. אינני יודע איך עושים זאת.
שומרים זאת בתוך הregistry זהו דוגמה
System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\WordVBA_LineToLine", "Max") = "5" MsgBox (System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\WordVBA_LineToLine", "Max"))
ב. האם יש פונקציה שבודקת האם אני בטור הראשון או השני.
בעבר חיפשתי פונקציית vba מובנית ולא מצאתי, מישהו יודע?
זוהי פונקציה שכתבתי שמחזירה את ההפרש בין טור 1 ל-2, זה כנראה יענה על הצורך שלך.Public Sub tryout() MsgBox (ColumnsDifference) End Sub Public Function ColumnsDifference() As Double If Selection.PageSetup.TextColumns.Count <> 2 Then MsgBox ("More then 2 Columns"): Exit Function Application.ScreenUpdating = False Dim WRange As Range Dim NumLines, WPage, i, col1, col2, Difference, Ignore As Double NumLines = ActiveDocument.Bookmarks("\page").Range.ComputeStatistics(wdStatisticLines) ActiveDocument.Bookmarks("\page").Range.Select Selection.MoveLeft Unit:=wdCharacter, Count:=1 Set WRange = ActiveDocument.Bookmarks("\page").Range WRange.SetRange START:=WRange.End - 2, End:=WRange.End col2 = WRange.Information(wdVerticalPositionRelativeToPage) For i = 1 To NumLines Selection.MoveDown wdLine, 1 If col1 > Selection.Information(wdVerticalPositionRelativeToPage) Then Exit For Else col1 = Selection.Information(wdVerticalPositionRelativeToPage) End If Next ActiveDocument.Bookmarks("\page").Range.Select Selection.MoveLeft Unit:=wdCharacter, Count:=1 If col1 > col2 Then Difference = col1 - col2 If col1 < col2 Then Difference = col2 - col1 ColumnsDifference = Difference Application.ScreenUpdating = True End Function
ג. האם יש פונקציה פשוטה שמחזירה את מספר הפיסקה שלי.
הראשון למספר מתחילת הקובץ, השני לדף זה (המספר מתחיל באפס כרגיל בקוד)
Set MyRange = Selection.Range MyRange.SetRange START:=ActiveDocument.Paragraphs(1).Range.START, End:=MyRange.End MsgBox (MyRange.ComputeStatistics(wdStatisticParagraphs)) Set MyRange = Selection.Range MyRange.SetRange START:=ActiveDocument.Bookmarks("\page").Range.START, End:=MyRange.End MsgBox (MyRange.ComputeStatistics(wdStatisticParagraphs))
ד. האם יש פונקציה שמובילה אותי לשורה האחרונה בעמוד.
זה
Set MyRange = ActiveDocument.Bookmarks("\page").Range MyRange.SetRange START:=MyRange.End - 1, End:=MyRange.End MyRange.Select