בקשת מידע | מקרו בוורד שיהפוך לי מ1 ל2 ומ2 ל1.
-
@מלאכת-מחשבת הקוד להחלפה במאקרו הוא פשוט:
Sub Macro1() ' ' Macro1 Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "מלאכת" .Replacement.Text = "מלאכץ" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "מחשבת" .Replacement.Text = "מחשבץ" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
אתה יכול לראות שיש כאן שני קטעי קוד כפולים, כל אחד להחלפה שונה לדוגמא בקטע הראשון (8-23):
בשורה 9 המילה המקורית ובשורה 10 המילה החדשה, בכל השאר אין צורך להתערב -
@menis אמר בבקשת מידע | מקרו בוורד שיהפוך לי מ1 ל2 ומ2 ל1.:
הקוד להחלפה במאקרו הוא פשוט:
בכלל לא פותר את הבעיה....
-
@מלאכת-מחשבת אמר בבקשת מידע | מקרו בוורד שיהפוך לי מ1 ל2 ומ2 ל1.:
@menis שאילתי האם יש אופציה להכניס בתיבת חיפוש מילה שלמעשה מילה זו היא תוצאת ההחלף של מילה אחרת , ויותר שבכל לחיצה נוספת היא תהפוך לי את המילה בחזרה וכן איך אוכל להכניס כמה מילים בשורת החפש וכנגדם כמה מילים בשורת ההחלף ב...
כמה שידוע לי אין בוורד אפשרות לחפש מילה א או מילה ב אלא רק את כל הטקסט של החיפוש יחד,
חשבתי אולי לעשות לולאה שעוברת על כל המילים במסמך ובודקת האם המילה שייכת לאחד הערכים הרצויים והופכת אותה למילה שכנגד, השאלה היא, האם אתה מעוניין לחפש גם צמדי מילים ולהפוך אותם (כגון לחפש בבא-קמא ולהפוך לב"ק), כי הלולאה הנ"ל עוברת רק על מילים בודדות (מילה אחר מילה), ולא מבצעת חיפוש כמו ה"חפש" של וורד. -
@מלאכת-מחשבת תנסה את זה ותעדכן עם עובד
For Each w In ActiveDocument.Words Select Case w Case "1": w.Text = "2" Case "2": w.Text = "1" Case "3": w.Text = "4" Case "4": w.Text = "3" End Select Next
כמובן תחליף את המספרים למילים שאתה רוצה.
שים לב שיש לכתוב כל מילה פעמיים כמו בדוגמא.
אם זה נתקע תנסה עם רווח לפני או אחרי המילה -
@dmp זה תוקע לי את כל המחשב, ניסיתי דבר ראשון בלי להחליף רק כפשוטו 1 2 3 4 וזה תוקע לי את הכל.
נראה לי שהוא נתקע כי הוא מחליף את 1 ל2 ואח"כ מחפש את 2 להחליף ל1 ומחליף גם את זה שהוחלף עתה וע"כ חוזר לתחילה ומחליף את ה1 ל2 וחוזר חלילה עד סוף כל הדורות... -
@מלאכת-מחשבת אמר בבקשת מידע | מקרו בוורד שיהפוך לי מ1 ל2 ומ2 ל1.:
@dmp זה תוקע לי את כל המחשב, ניסיתי דבר ראשון בלי להחליף רק כפשוטו 1 2 3 4 וזה תוקע לי את הכל.
נראה לי שהוא נתקע כי הוא מחליף את 1 ל2 ואח"כ מחפש את 2 להחליף ל1 ומחליף גם את זה שהוחלף עתה וע"כ חוזר לתחילה ומחליף את ה1 ל2 וחוזר חלילה עד סוף כל הדורות...ממש לא.
המאקרו עובר מילה מילה ובודק האם היא זהה לאחד הערכים בשורות 3-6, ואם כן, מבצע החלפה.
מה שאפשר לנסות זה:
א. להפעיל בקובץ קצר שיקח מהר לעבור על הכל.
ב. לעבור לתצוגת טיוטה.
ג. לא להפעיל מיד עם פתיחת המסמך אלא לעשות עריכה כל שהיא (ואפשר למחוק מיד) ואח"כ להפעיל את המאקרו. (כלל זה חשוב לכל מאקרו שמבצע שינויים במסמך שאין להפעילו מיד). -
@מלאכת-מחשבת צודק!!!
בדקתי עכשיו וזה אכן נתקע, אבל בנוסח הזה זה אכן עובדFor i = 1 To ActiveDocument.Words.Count Set w = ActiveDocument.Words(i) Select Case w Case "1 ": w.Text = "2 " Case "2 ": w.Text = "1 " Case "3 ": w.Text = "4 " Case "4 ": w.Text = "3 " End Select Next
-
@dmp מעולה!
האם תוכל לעבור על מה שכתבתי כאן https://mitmachim.top/post/363091 ? -