שיתוף | "מתעדכן" אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות.
-
@menajemmendel
הריבועים הללו מסמנים פיסקא המוגדרת ככותרת אצלך, ואצל @מניין כנראה מעבר עמוד.
איני יודע מה גורם להם להופיע, אבל כאשר יש מעבר עמוד, או פסקת כותרת מופיעים ריבועים אלו.עריכה:
בעצם הכתיבה על כך אינה קשורה לשרשור זה, אז כדאי למחוק אותם @menajemmendel ו @מניין -
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@מניין אני לא יודע מה הם הריבועים האלה אבל לא נראה לי שהם בגלל המעבר עמוד, אצלי מופיעים הרבה פעמים (לא יודע למה) באותו עמוד בלי מעבר עמוד ובלי מעבר פסקה
הסימון מופיע אם אחד משלשת האפשרויות הבאות מסומנות.
-
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
הנה למעבר עמוד
עובד כדלהלן:
עומדים על הטקסט עם הסגנון שרוצים שיהיה בראש העמוד, ולוחצים על הכפתור של המקארו הוא בודק פעם הבא שמופיע ומוסיף לפניו מעבר עמוד,
הוא לא עושה את זה אוטומטי על כל המסמך (אפשר לעשות אבל אין לי זמן לזה כרגע, אולי בעתיד בעז''ה) אבל בכל אופן תוך כמה שניות גומרים את כל המסמך, (הרי ספר אם 100 פרקים אומר שמספיק ללחוץ 100 פעמים, שכ''א חצי שניה)Sub סגנון_נוכחי_לתחילת_עמוד() ' מחפש סגנון Selection.Find.ClearFormatting SIGNON = Selection.Style With Selection.Find .Text = "" .Style = SIGNON .Forward = True .Wrap = wdFindAsk End With Selection.Find.Execute 'אחרי שמצא עובר אחוריו ועושה מעבר Selection.MoveUp Unit:=wdParagraph, Count:=1 Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.InsertBreak Type:=wdSectionBreakNextPage Selection.Delete Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=1 End Sub
@pcinfogmach @מניין @menajemmendel @דאנציג
כמה זה מסובך להוסיף כאן לולאה שתעבור אוטומטית על הסגנון שנבחר בכל המסמך?
באמת שזה בסדר גם בלי אבל שיהיה כבר דבר מושלם.. -
@mfmf אם מוסיפים מעבר עמוד ידני, יש בעיות אחרות, לדוגמא שזה מוסיף שורה ריקה בכל פעם, ושורה זו עושה הרבה בעיות לכותרות המתחלפות אוטומטית, ולכן יש שני אפשרויות והבוחר יבחר, 1. לעשות מעבר עמוד לפני, שזה לא מוסיף כלום, והכל נעשה בצורה אוטומטית ורשמית בלי קומבינות, ולזכור או לסמן את החריגות. 2. להשתמש עם המאקרו שמוסיף מעבר עמוד ידנית, ולהוסיף במאקרו שימחוק את השורה הנוספת שנוספה.
-
המקרו שלי מוחק את השורה, אתה מוזמן לבדוק או לקראו את המקרו
-
@mfmf זה לא קשה בכללאבל אין לי זמן כרגע, אתם יודעים אחרי הכל ערב פסח, ואולי תשאלו אז איך יש לך זמן לענות פה על השאלה אומר לכם, שעיקר הקושי במקרו זה לא הכתיבה אלא התכנון בראש מה בדיוק יעשה
ולכן אגב אומר עצה טובה למי שלא יודע בעצמו לכתוב מאקרוים ומבקש בבמה חשובה זו או באחרת שמישהו יכתוב, שיעזור מאד אם בעת הבקשה יכתוב לדעתו, איך המקרו יעשה את זה, כלומר נכון ששלא יודע לכתוב את הפקודות, אבל שיכתוב איזה צעדים המחשב יעשה כדי לעשות את המקרו
תדמיינו שהמחשב הוא סוג של פועל סיני שלא יודע לקרוא עברית כדי לדעת מה כתוב בקובץ, אבל מבין אם תאמרו לו קודם לך לעמוד הא’ ואח’’כ תרד 3 שורות ותמחוק וכו’ וכו’וזה מאד מיקל על כותב המקרו, וגם אם אי אפשר לעשות מה שאתם בדיוק כתבתם נותן לו רעיונות איך לעשות
לדוגמא בא נאמר שאחד היה רוצה שיכתבו מאקרו לעשיית חלון בשורה שניה (אני יודע שיש לזה כבר מאקרוים אני רק אומר דוגמא) אזי נכון שהמבקש לא יודע שפת vba אבל יכול לומר אולי שילך לראש פסקה ירד שורה ויעתיק את המילה הראשונה בצבע לבן (אני יודע שזה לא באמת רעיון טוב מכמה סיבות) או אחר יאמר שאפשר לעשות תיבת טקסט ולהכניס את המילה הראשונה תוך התיבה וכו’ וכו’
בסדר הבנתם את הרעיון.לפעמים יכול גם כותב המאקרו עצמו להתייעץ אם משלא יודע לקודד, כי זה לא ענין של לקודד, זה עניין של הגיון טהור
תודה רבה -
@mfmf כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@מניין אגדי! תודה רבה!!
יש מצב גם למאקרו דומה שיעשה מעבר עמוד לפי בחירת סגנון?
לדוגמא שיהיה אפשרות לבחור את סגנון 'פסקת רשימה' לדוגמה ויעבור אוטומטי בכל המסמך ויעשה לפניו מעבר עמוד.
בדרך כלל אנשים אוהבים שתחילת כל סימן יהיה בעמוד חדש, ובקובץ עם הרבה סימנים זה עבודת נמלים..
ייש"כהצלחתי בסוף דרך ChatGPT ליצור קוד שמוסיף מעבר שורה ידני לפני שורה ממורכזת וכמובן בלי להוסיף שורה מיותרת. הקוד עובד על כל המסמך.
זה הקוד למי שמעוניין:Sub AddPageBreaksToCenteredParagraphs() 'Declare variables Dim para As Paragraph Dim rng As Range 'Set the range to the beginning of the first paragraph Set rng = ActiveDocument.Paragraphs(1).Range 'Loop through each paragraph in the document For Each para In ActiveDocument.Paragraphs 'Set the range to the current paragraph Set rng = para.Range 'Check if the paragraph is centered If rng.ParagraphFormat.Alignment = wdAlignParagraphCenter Then 'Move the range to the end of the previous paragraph rng.MoveStart wdCharacter, -1 Do While rng.Characters.Last = vbCr rng.MoveEnd wdCharacter, -1 Loop 'Add a page break before the paragraph rng.InsertBefore Chr(12) End If Next para End Sub
-
@pcinfogmach תודה רבה על הקוד, אבל שאלה קטנה יש לי, למה צריך את המעבר שורה ידני, אותו דבר אפשר לעשות בלי המעבר שורה, בלי אנטר ובלי שום דבר, פשוט טאב ממורכז כמו שעשית
תודה
-
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@pcinfogmach תודה רבה על הקוד, אבל שאלה קטנה יש לי, למה צריך את המעבר שורה ידני, אותו דבר אפשר לעשות בלי המעבר שורה, בלי אנטר ובלי שום דבר, פשוט טאב ממורכז כמו שעשית
תודה
אולי תמקד אותי על איזה קוד מדובר?
-
-
@pcinfogmach סליחה שלא פירטתי, התכוונתי על הקוד של מרכוז שורה אחרונה
ידיעה חשובה: לא פירטתי כי אפשר לראות על איזה משפט שלך כתבתי את שאלתי, עם מעבירים את העכבר מעל שם ה''נשאל'' ליד שם ה''שואל''
-
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@pcinfogmach תודה רבה על הקוד, אבל שאלה קטנה יש לי, למה צריך את המעבר שורה ידני, אותו דבר אפשר לעשות בלי המעבר שורה, בלי אנטר ובלי שום דבר, פשוט טאב ממורכז כמו שעשית
תודה
המעבר שורה בא לחסוך בעיה כאשר לפעמים הטאב בעצם קופץ אוטמטית לסוף השורה הקודמת. מה שקורה כאשר יש רק קצת מילים בשורה הראשונה ובפרט כאשר הטקסט מיושר לשני הצדדים.
אפשר בעצם להוסיף קוד שימחק את המעבר שורה אחרי ההשמה של הטאב אבל העדפתי להשאיר את הדברים כך כיון שקוד זה עלול למחוק מעברי שורה שהמשתמש השים בעצמו.
כללו של דבר אין מאקרו מושלם וכל אחד יבחר לו מה שמתאים לו, כמו"כ יש עוד שיטות איך לעשות מירכוז שורה אחרונה וכמו שהבאתי באחד הפוסטים כאן בתוך התבנית עיצוב ספרי קודש.
-
@pcinfogmach לא הבנתי איך יכול להיות שאתה תשים טאב בשורה מסויימת, ויעלה למעלה, הרי הטאב הוא לא אות כל שהיא שאם יש מספיק מקום משבילה יכתוב אותה למעלה, נסיתי מה שאתה אומר ואל מצאתי מקרה כזה, אבל אם ראיתה כזה מקרה אשמח שתראה לי אותו כי זה לא נשמע כ''כ הגיוני
-
@menajemmendel לכאורה זה תלוי בגרסאות של אופיס
-
-
@pcinfogmach
נראה לי שהטעות שלך הוא שעשית את הטאב בסוף השורה הראשונה, ואתה צריך לעשות אותו בתחילה השורה השניה,
תנסה ותאמר לי -
@menajemmendel
נראה שאתה צודק
אצטרך לעשות בדיקות יותר מאסיביות בהמשך.
למעשה יש עוד סיבה למעבר שורה כדי למנוע כפילויות. אבל זה פתיר בצורות אחרות. -
@menajemmendel
עכשיו חשבתי על בעיה אחרת - מצד מחיקת המירכוז.
כי כרגע יש סימן זיהוי לטאבים של המירכוז לעומת טאבים אחרים - כלומר המחיקה חלה רק על טאבים ששיכים למירכוז. אבל בלי הוספת המעבר שורה אין שום סימן היכר והמחיקה תמחק את כל הטאבים גם מה שאינני רוצה שימחק.
פתרון אפשרי שצריך לבדוק אותו: שמאקרו המחיקה ימחק רק טאבים שבשורה האחרונה שבפיסקה.מה אתם אומרים על כל זה?
-
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@pcinfogmach תודה רבה על הקוד, אבל שאלה קטנה יש לי, למה צריך את המעבר שורה ידני, אותו דבר אפשר לעשות בלי המעבר שורה, בלי אנטר ובלי שום דבר, פשוט טאב ממורכז כמו שעשית
תודה
מצו"ב הקוד המעודכן לפי ההצעה שלך
Option Explicit Sub מירכוז_שורה_אחרונה_בכל_הפסקאות_במסמך() ' ' ' Dim response As Integer response = MsgBox("שים לב, פקודה זו מהווה אילתור בלבד ומיועדת לשימוש לפני הדפסה." _ & vbNewLine & vbNewLine & "במקרה שערכתם שינויים במסמך תוכלו להריץ שוב פקודה זו" & vbNewLine & "בכדי לתקן את העיצוב.", _ vbInformation + vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "מירכוז שורה אחרונה בפיסקה") If response = vbCancel Then Exit Sub Dim exclude2Lines As Boolean exclude2Lines = MsgBox("האם ברצונך לכלול פיסקאות עם 2 שורות?", vbQuestion + vbYesNo + vbMsgBoxRight + vbMsgBoxRtlReading, "מרכוז שורה אחרונה") = vbNo Call מחיקת_מרכוז_שורה_אחרונה_מכל_המסמך Dim para As Paragraph Dim middlePosition As Double For Each para In ActiveDocument.Paragraphs para.Range.Select 'exclusions If para.Range.ComputeStatistics(wdStatisticLines) > 1 Then If para.Range.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then If Not exclude2Lines Or para.Range.ComputeStatistics(wdStatisticLines) <> 2 Then ' Move the cursor to end of paragraph. Selection.MoveStartUntil vbCrLf, wdForward 'add costume tabstop middlePosition = Selection.PageSetup.TextColumns(Dialogs(wdDialogFormatColumns).ColumnNo).Width / 2 With Selection.ParagraphFormat.TabStops .ClearAll .Add Position:=middlePosition, _ Alignment:=wdAlignTabCenter End With ' Move the cursor to the beginning of the last line in the paragraph. Selection.Move wdLine, -1 ' Check if the line already starts with a tab. If InStr(1, Selection.Text, vbTab) <> 1 Then ' Add a tab to the beginning of the line. Selection.TypeText vbTab End If End If End If End If Next End Sub Sub מירכוז_שורה_אחרונה_בפיסקאות_שנבחרו() ' ' ' Dim response As Integer response = MsgBox("שים לב, פקודה זו מהווה אילתור בלבד ומיועדת לשימוש לפני הדפסה." _ & vbNewLine & vbNewLine & "במקרה שערכתם שינויים במסמך תוכלו להריץ שוב פקודה זו" & vbNewLine & "בכדי לתקן את העיצוב.", _ vbInformation + vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "מירכוז שורה אחרונה בפיסקה") If response = vbCancel Then Exit Sub Dim slctd As Range Set slctd = Selection.Range Dim exclude2Lines As Boolean exclude2Lines = MsgBox("האם ברצונך לכלול פיסקאות עם 2 שורות?", vbQuestion + vbYesNo + vbMsgBoxRight + vbMsgBoxRtlReading, "מרכוז שורה אחרונה") = vbNo Call הסרת_מרכוז_שורה_אחרונה_בפיסקאות_שנבחרו Dim para As Paragraph Dim middlePosition As Double For Each para In slctd.Paragraphs para.Range.Select 'exclusions If para.Range.ComputeStatistics(wdStatisticLines) > 1 Then If para.Range.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then If Not exclude2Lines Or para.Range.ComputeStatistics(wdStatisticLines) <> 2 Then ' Move the cursor to end of paragraph. Selection.MoveStartUntil vbCrLf, wdForward 'add costume tabstop middlePosition = Selection.PageSetup.TextColumns(Dialogs(wdDialogFormatColumns).ColumnNo).Width / 2 With Selection.ParagraphFormat.TabStops .ClearAll .Add Position:=middlePosition, _ Alignment:=wdAlignTabCenter End With ' Move the cursor to the beginning of the last line in the paragraph. Selection.Move wdLine, -1 ' Check if the line already starts with a tab. If InStr(1, Selection.Text, vbTab) <> 1 Then ' Add a tab to the beginning of the line. Selection.TypeText vbTab End If End If End If End If Next End Sub Sub מחיקת_מרכוז_שורה_אחרונה_מכל_המסמך() Dim para As Paragraph Dim middlePosition As Double For Each para In ActiveDocument.Paragraphs If para.Range.ComputeStatistics(wdStatisticLines) > 1 Then If para.Range.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then para.Range.Select ' Move the cursor to the beginning of the last line in the paragraph. Selection.MoveStartUntil vbCrLf, wdForward Selection.Move wdLine, -1 ' Check if the line already starts with a tab. If Not InStr(1, Selection.Text, vbTab) <> 1 Then ' delete tab in beginning of the line. Selection.Delete Unit:=wdCharacter, Count:=1 End If End If End If Next End Sub Sub הסרת_מרכוז_שורה_אחרונה_בפיסקאות_שנבחרו() Dim para As Paragraph Dim middlePosition As Double Dim slctd As Range Set slctd = Selection.Range For Each para In slctd.Paragraphs If para.Range.ComputeStatistics(wdStatisticLines) > 1 Then If para.Range.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then para.Range.Select ' Move the cursor to the beginning of the last line in the paragraph. Selection.MoveStartUntil vbCrLf, wdForward Selection.Move wdLine, -1 ' Check if the line already starts with a tab. If Not InStr(1, Selection.Text, vbTab) <> 1 Then ' delete tab in beginning of the line. Selection.Delete Unit:=wdCharacter, Count:=1 End If End If End If Next End Sub