בקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים
-
שלום וברכה יש לי המון מסמכים שעיצבתי אותם פעם בגופנים מסוימים ואני מעוניין להחליף את הגופנים הקיימים בגופנים אחרים, אבל הענין הוא שכל פעם אני צריך להגדיר מחדש את העיצוב שברצוני להחליף ואת העיצוב שאני רוצה שיתחלף מה שעל כל קובץ לוקח זמן.
לכך מי שיכול בבקשה לכתוב לי מאקרו של חיפוש והחלפה לפי עיצוב של גופן אשמח מאוד ובנוסף שאני יוכל לשמור את הגדרת העיצוב באופן קבוע (אפי' אם זה יהיה כמה פקודות מאקרו לכל גופן בשונה) אשמח מאוד
תודה רבה
@pcinfogmach@עולה-במסילה כתב בבקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים:
שאני רוצה שיתחלף מה שעל כל קובץ לוקח זמן.
בתוסף 'עיצוב תורני' יש אפשרות החלפה במסמכים מרובים / לפי תיקיות!!!

-
@עולה-במסילה כתב בבקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים:
שאני רוצה שיתחלף מה שעל כל קובץ לוקח זמן.
בתוסף 'עיצוב תורני' יש אפשרות החלפה במסמכים מרובים / לפי תיקיות!!!

@דאנציג אבל הוא מאפשר החלפת קטעים מסויימים בתוך הקובץ, לא?
-
שלום וברכה יש לי המון מסמכים שעיצבתי אותם פעם בגופנים מסוימים ואני מעוניין להחליף את הגופנים הקיימים בגופנים אחרים, אבל הענין הוא שכל פעם אני צריך להגדיר מחדש את העיצוב שברצוני להחליף ואת העיצוב שאני רוצה שיתחלף מה שעל כל קובץ לוקח זמן.
לכך מי שיכול בבקשה לכתוב לי מאקרו של חיפוש והחלפה לפי עיצוב של גופן אשמח מאוד ובנוסף שאני יוכל לשמור את הגדרת העיצוב באופן קבוע (אפי' אם זה יהיה כמה פקודות מאקרו לכל גופן בשונה) אשמח מאוד
תודה רבה
@pcinfogmach@עולה-במסילה למה שלא תעבוד עם סגנונות?
-
@עולה-במסילה למה שלא תעבוד עם סגנונות?
@זאב-לבן
חשבתי להציע לו את זה, היות וזו הדרך הנכונה והקלה ביותר לעבוד עם וורד, אבל@עולה-במסילה כתב בבקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים:
יש לי המון מסמכים שעיצבתי אותם פעם
ולעבור על מסמכים ישנים, ולבנות סגנונות וכו', זה הרבה יותר קשה מאשר חיפוש והחלפה או מאקרו.
אמנם אם הוא באמת רוצה, ניתן ליצור סגנונות, ולהעביר אותם למסמכים אחרים, (ואפשר גם חיצוני [בלי לפתוח קובץ קובץ], אבל רק על DOCX, ולא DOC)... -
@עולה-במסילה למה שלא תעבוד עם סגנונות?
@זאב-לבן תודה רבה על המענה שלך
ובקשר למה שכתבת אני לא יכול לעבוד עם סגנונות כיון שזה פסקאות שבכל פסקה יש כמה גופנים ואם אני משנה סגנון כל הפיסקא משתנה ביחד לכן מה שאני צריך חיפוש והחלפה לפי גופן
תודה רבה -
@עולה-במסילה
יצרתי לך - בעזרת AI.
מקווה שזה מה שהתכוונת...תמונות בספויילר בסוף
Sub FinalFont_InstantUpdate() Dim selectedFont As String Dim lastUsedFont As String Dim answer As VbMsgBoxResult ' 1. בחירה מפורשת של הכל אם לא סומן כלום If Selection.Start = Selection.End Then ActiveDocument.Range.Select End If ' 2. שליפת הגופן האחרון lastUsedFont = GetSetting("MyWordMacros", "Settings", "LastFont", "David") ' 3. שאלה למשתמש answer = MsgBox("האם להשתמש בגופן האחרון: " & lastUsedFont & "?" & vbCrLf & _ "לחץ 'כן' לביצוע, או 'לא' לבחירה מרשימה.", _ vbYesNoCancel + vbQuestion + vbMsgBoxRight + vbMsgBoxRtlReading, "החלפת גופן") If answer = vbYes Then selectedFont = lastUsedFont ElseIf answer = vbNo Then With Application.Dialogs(wdDialogFormatFont) If .Show = -1 Then selectedFont = Selection.Font.NameBi If selectedFont = "" Or selectedFont = "0" Then selectedFont = Selection.Font.Name End If End With If selectedFont <> "" And selectedFont <> "0" Then SaveSetting "MyWordMacros", "Settings", "LastFont", selectedFont Else Selection.Collapse Direction:=wdCollapseStart Exit Sub End If Else Selection.Collapse Direction:=wdCollapseStart Exit Sub End If ' 4. ביצוע השינוי עם עדכון מסך כפוי If selectedFont <> "" Then Application.ScreenUpdating = False ' מכבה עדכון כדי להאיץ On Error Resume Next With Selection.Font .NameBi = selectedFont .Name = selectedFont End With On Error GoTo 0 ' פקודות לרענון מיידי של המסך Application.ScreenUpdating = True ' מדליק חזרה ומאלץ רענון DoEvents ' משחרר את המערכת לעדכון גרפי Application.ScreenRefresh ' רענון סופי של Word Selection.Collapse Direction:=wdCollapseStart Application.StatusBar = "הגופן עודכן ל-" & selectedFont End If End Sub
@יאיר-דניאל תודה רבה על הקוד שכתבת בשבילי
אבל זה לא נותן לי מענה מיידי כי אני צריך שהמאקרו יתן לי אפשרות לבחור איזה גופן ברצוני להחליף ואח"כ יתן לי את האופציה באיזה גופן לבחור
לאחר ניסיתי את הקוד שהבאת הוא נותן רק את האופציה לאיזה גופן לשנות אבל הוא משנה את כל המסמך ולא גופן ספציפי בגופן אחר
תודה רבה -
@יאיר-דניאל תודה רבה על הקוד שכתבת בשבילי
אבל זה לא נותן לי מענה מיידי כי אני צריך שהמאקרו יתן לי אפשרות לבחור איזה גופן ברצוני להחליף ואח"כ יתן לי את האופציה באיזה גופן לבחור
לאחר ניסיתי את הקוד שהבאת הוא נותן רק את האופציה לאיזה גופן לשנות אבל הוא משנה את כל המסמך ולא גופן ספציפי בגופן אחר
תודה רבה@עולה-במסילה אתה יכול לסמן קטע - ואז להפעיל את המאקרו - והוא יחליף רק את אותו הקטע
-
@עולה-במסילה אתה יכול לסמן קטע - ואז להפעיל את המאקרו - והוא יחליף רק את אותו הקטע
@יאיר-דניאל הבעיה היא שכל קטע מורכב משני גופנים כך שלעבוד על כל קטע בנפרד הוא כמו לעבוד על כל מסמך בנפרד ולהגדיר את הגופנים אותן אני מעונין להחליף...
-
@יאיר-דניאל הבעיה היא שכל קטע מורכב משני גופנים כך שלעבוד על כל קטע בנפרד הוא כמו לעבוד על כל מסמך בנפרד ולהגדיר את הגופנים אותן אני מעונין להחליף...
@עולה-במסילה הבנתי - אנסה לשפר את זה.
-
@עולה-במסילה הבנתי - אנסה לשפר את זה.
הנה בכבוד:
Sub ReplaceSpecificFont() Dim docFonts As New Collection Dim targetFont As String Dim replacementFont As String Dim lastUsedFont As String Dim i As Long Dim fontChoice As String Dim answer As VbMsgBoxResult ' 1. סריקת המסמך לזיהוי פונטים קיימים On Error Resume Next Dim para As Paragraph For Each para In ActiveDocument.Paragraphs ' הוספת הגופן הרגיל והגופן העברי לאוסף If para.Range.Font.Name <> "" Then docFonts.Add para.Range.Font.Name, para.Range.Font.Name If para.Range.Font.NameBi <> "" Then docFonts.Add para.Range.Font.NameBi, para.Range.Font.NameBi Next para On Error GoTo 0 If docFonts.Count = 0 Then MsgBox "לא נמצאו גופנים מזוהים.", vbExclamation Exit Sub End If ' 2. בחירת הגופן להחלפה Dim fontList As String fontList = "בחר מספר גופן להחלפה:" & vbCrLf For i = 1 To docFonts.Count fontList = fontList & i & ". " & docFonts(i) & vbCrLf Next i fontChoice = InputBox(fontList, "חפש והחלף גופן") If Not IsNumeric(fontChoice) Then Exit Sub i = CInt(fontChoice) If i < 1 Or i > docFonts.Count Then Exit Sub targetFont = docFonts(i) ' 3. בחירת גופן היעד lastUsedFont = GetSetting("MyWordMacros", "Settings", "LastFont", "David") answer = MsgBox("להחליף את " & targetFont & " ב-" & lastUsedFont & "?" & vbCrLf & _ "לחץ 'כן' לאישור, או 'לא' לבחירה מרשימה.", _ vbYesNoCancel + vbQuestion + vbMsgBoxRight + vbMsgBoxRtlReading) If answer = vbYes Then replacementFont = lastUsedFont ElseIf answer = vbNo Then With Application.Dialogs(wdDialogFormatFont) If .Show = -1 Then replacementFont = Selection.Font.NameBi If replacementFont = "" Or replacementFont = "0" Then replacementFont = Selection.Font.Name End If End With Else Exit Sub End If If replacementFont = "" Or replacementFont = "0" Then Exit Sub SaveSetting "MyWordMacros", "Settings", "LastFont", replacementFont ' 4. ביצוע ההחלפה (שיטה משופרת) Application.ScreenUpdating = False ' פקודת ההחלפה צריכה לרוץ פעמיים כדי לכסות גם עברית וגם אנגלית בוודאות Call ExecuteFontReplace(targetFont, replacementFont, True) ' עבור עברית Call ExecuteFontReplace(targetFont, replacementFont, False) ' עבור אנגלית Application.ScreenUpdating = True Application.ScreenRefresh MsgBox "הפעולה הושלמה עבור הגופן: " & targetFont, vbInformation End Sub ' פונקציית עזר לביצוע ההחלפה בפועל' פונקציית עזר לביצוע ההחלפה בפועל - עם שמות פרמטרים תקינים Sub ExecuteFontReplace(fTarget As String, fReplace As String, isBi As Boolean) Dim r As Range Set r = ActiveDocument.Content r.Find.ClearFormatting r.Find.Replacement.ClearFormatting If isBi Then r.Find.Font.NameBi = fTarget r.Find.Replacement.Font.NameBi = fReplace Else r.Find.Font.Name = fTarget r.Find.Replacement.Font.Name = fReplace End If ' התיקון הקריטי: FindText במקום Text, ו-ReplaceWith במקום ReplacementText r.Find.Execute FindText:="", ReplaceWith:="", _ Forward:=True, Wrap:=wdFindContinue, Format:=True, Replace:=wdReplaceAll End Subזה עובד כך - תמונות בספויילר



-
ואם אתה רוצה יותר משוכלל - שלא תצטרך להקליד אפילו את שם הגופן להחלפה - אז הנה.
פשוט תפעיל את הקובץ המצורף
החלפת גופנים.exeאו שתכניס את הקובץ הזה - לתיקיית הטמפלס של אופיס (הקובץ למעלה
- עושה את זה אוטומטית)כך זה נראה:

המשך התהליך זהה למאקרו הקודם -
ואם אתה רוצה יותר משוכלל - שלא תצטרך להקליד אפילו את שם הגופן להחלפה - אז הנה.
פשוט תפעיל את הקובץ המצורף
החלפת גופנים.exeאו שתכניס את הקובץ הזה - לתיקיית הטמפלס של אופיס (הקובץ למעלה
- עושה את זה אוטומטית)כך זה נראה:

המשך התהליך זהה למאקרו הקודם@יאיר-דניאל תודה רבה אנסה את זה ואענה על כך בהמשך אין מילים...