שיתוף | "מתעדכן" אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות.
-
@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
-
@pcinfogmach יש קצת סימן היכר, שהם לא טאבים רגילים אלא הם בדיוק באמצע הטור, אבל זה אינו מוכרח כי יכול להיות שיש אחרים גם באמצע, אז אולי באמת זה טוב עם המעבר שורה ידני,
אם אין שום חסרון במעבר שורה, אזי הוא בסדר, עיקר השאלה שלי, היה בדרך לימוד, וגם שאני לא אוהב שיהיה דברים מיותרים בקודים, אבל אם יש צורך אז אדרבה -
@pcinfogmach אני מקווה שהצעה שלי אכן הועילה ולא סתם הטרחתי אותך בחינם.
עכשיו שראיתי את הקוד החדש יש לי שאלה, ואני לא מתכון לשגע אתך סתם ''למה ככה ולא ככה וכו''' אני באמת שואל לדעת אם יש בזה משהו, אני קצת חדש בVBA, ושואל לדעתלמה יש חלקים בקוד שכתובים בצורה הפוכה (מסורבלת לדעתי) לדגומא החלק הזה:
' Check if the line already starts with a tab. If Not Left(Selection.Text, 1) <> vbTab Then
למה לא לכתוב ישר:
If Left(Selection.Text, 1) = vbTab Then
הוא כמו שאני אגיד לך:
כי לא אכחד ממך שדעתי אינה תואמת בהצהרה שפחות ברור אם לא נכתוב בצורה השניה.
כלומר, שאני חושב שיותר קל בצורה זו.האמת שאני לא יודע אם אתה כתבת את הקוד, או ניקיוזר, אז לא יודע למי לפנות בשאלה, בכל אופן תודה רבה על כל השקעה
-
@menajemmendel
ניקיוזר כתב במקור אני שיפצתי למעשה הוא מבין במאקרו הרבה יותר ממני
הסיבה להגדרה בשלילה אינה ידועה לי רק שהיא מאוד שימושית כאשר עושים החרגות כי לפעמים ההגדרה שאינה בשלילה לא תפעל שום החרגה. וכן להיפך לפעמים כשנראה שהגדרה בשלילה תעשה החרגה היא לא תעשה כלום ורק הגדרה חיובית תעשה החרגה.
אולי יבוא מישהו ויסביר לשנינו למה זה ככה.
למעשה הכלל בקידוד הוא עשה מה שעובד הכי טוב ואח"כ מה שמובן הכי טוב.(אגב עידכנתי את הקוד מעט מסיבות שונות עיין שוב בפוסט הקודם בשינויים שעשיתי שם)
-
מאקרו מעבר מהערה למסמך ולהיפך, וכן מאקרו ליצירת אינדקס בקלות
מעבר-מהערה-למסמך ואינדקס.dotm
בהצלחה -
@pcinfogmach
כידוע לפעמים תוך כדי הכתיבה פותחים סוגריים ושוכחים לסגור אותם, או שפותחים סוגריים בתוך סוגריים, דבר שלא תמיד מקובל
המאקרו הזה מחפש את המקרים האלה בצבע אדום, שאדם יוכל לתקנם (אפשר לעבור מאחד לשני עם קונטרול PAGEDOWNעריכה של ידידנו @דאנציג למטה https://mitmachim.top/assets/uploads/files/1682045184501-חיפוש-סוגריים-לא-סגורים.dotm
-
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
כידוע לפעמים תוך כדי הכתיבה פותחים סוגריים ושוכחים לסגור אותם, או שפותחים סוגריים בתוך סוגריים, דבר שלא תמיד מקובל
המאקרו הזה מחפש את המקרים האלה בצבע אדום, שאדם יוכל לתקנם (אפשר לעבור מאחד לשני עם קונטרול PAGEDOWNלא נמצאו תוצאות...
-
@דאנציג כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
כידוע לפעמים תוך כדי הכתיבה פותחים סוגריים ושוכחים לסגור אותם, או שפותחים סוגריים בתוך סוגריים, דבר שלא תמיד מקובל
המאקרו הזה מחפש את המקרים האלה בצבע אדום, שאדם יוכל לתקנם (אפשר לעבור מאחד לשני עם קונטרול PAGEDOWNלא נמצאו תוצאות...
כנראה שאין לך סוגריים בעייתים, תפתח סוגרים בעמצע הסוגר ותבדוק שוב
-
@menajemmendel
נא לסגור מאקרו סוגריים בתוך תבנית לתועלת האשכול -
-
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
כנראה שאין לך סוגריים בעייתים, תפתח סוגרים בעמצע הסוגר ותבדוק שוב
לא הייתי כותב אלמלא שתלתי כמה סוגריים ללא פתיחה/סגירה.
פעם אחת כן עבד לי חלקית - שתלתי כמה סוגריים לא בן זוג, ורק אחד מהם סומן, והשאר לא. ובפעמים הבאות שניסתי לחזור על אותו טקטס לא מצא כלום.
כאן המקום להודות לך, אם זה יעבוד זה מאקרו מדהים, שמאוד מאוד יעזור.
חודש טוב -
-
@ASDF1345 כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
מאקרו מעבר מהערה למסמך ולהיפך, וכן מאקרו ליצירת אינדקס בקלות
מעבר-מהערה-למסמך ואינדקס.dotm
בהצלחהמאוד נחמד, אבל לגבי מעבר מהמסמך להערה לא צריך את כל הקוד, מספיק רק
ActiveWindow.View.SplitSpecial = wdPaneFootnotes
וזה למעבר למסמך מההערה
ActiveWindow.View.SeekView = wdSeekMainDocument
אגב, אני הוספתי את הפקודה הזו:
לשורה למעלה, כך שלחיצה על ALT + 5 (אצלי) מביאה את אותה פונקציה בפקודה אחת, דהיינו לחיצה אחת יורדת להערה, ולחיצה נוספת מעלה בחזרה לטקסט, כך שלא צריך שתי פקודות מאקרו נפרדות (שתי קצורי מקשים). -
@menajemmendel כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
@pcinfogmach
כידוע לפעמים תוך כדי הכתיבה פותחים סוגריים ושוכחים לסגור אותם, או שפותחים סוגריים בתוך סוגריים, דבר שלא תמיד מקובל
המאקרו הזה מחפש את המקרים האלה בצבע אדום, שאדם יוכל לתקנם (אפשר לעבור מאחד לשני עם קונטרול PAGEDOWNעריכה של ידידנו @דאנציג למטה https://mitmachim.top/assets/uploads/files/1682045184501-חיפוש-סוגריים-לא-סגורים.dotm
יש להדגיש, שעל הסוגר האחרון של המסמך זה לא עובד.
-
-
-
@מניין כתב בשיתוף | אוסף מאקרו לוורד - אינדקס מאקרו שימושי + הוראות חשובות:
יש להדגיש, שעל הסוגר האחרון של המסמך זה לא עובד.
נכון שמתי לב לזה, אז נראה לי שאני הוסיף למאקרו שמתחילה יכתוב בסוף המסמך סוגר, ובסוף המקראו ימחוק אותו