דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. תוכנות
  3. יישומי אופיס
  4. וורד
  5. עזרה הדדית - וורד
  6. בקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים

בקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים

מתוזמן נעוץ נעול הועבר עזרה הדדית - וורד
14 פוסטים 4 כותבים 68 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ע עולה במסילה

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

    ז מנותק
    ז מנותק
    זאב לבן
    כתב נערך לאחרונה על ידי
    #5

    @עולה-במסילה למה שלא תעבוד עם סגנונות?

    דאנציגד ע 2 תגובות תגובה אחרונה
    1
    • ז זאב לבן

      @עולה-במסילה למה שלא תעבוד עם סגנונות?

      דאנציגד מחובר
      דאנציגד מחובר
      דאנציג
      מדריכים
      כתב נערך לאחרונה על ידי דאנציג
      #6

      @זאב-לבן
      חשבתי להציע לו את זה, היות וזו הדרך הנכונה והקלה ביותר לעבוד עם וורד, אבל

      @עולה-במסילה כתב בבקשה | יצירת מאקרו חיפוש והחלפה לפי עיצוב ולא מילים:

      יש לי המון מסמכים שעיצבתי אותם פעם

      ולעבור על מסמכים ישנים, ולבנות סגנונות וכו', זה הרבה יותר קשה מאשר חיפוש והחלפה או מאקרו.
      אמנם אם הוא באמת רוצה, ניתן ליצור סגנונות, ולהעביר אותם למסמכים אחרים, (ואפשר גם חיצוני [בלי לפתוח קובץ קובץ], אבל רק על DOCX, ולא DOC)...

      תגובה 1 תגובה אחרונה
      1
      • ז זאב לבן

        @עולה-במסילה למה שלא תעבוד עם סגנונות?

        ע מנותק
        ע מנותק
        עולה במסילה
        כתב נערך לאחרונה על ידי
        #7

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

        תגובה 1 תגובה אחרונה
        0
        • יאיר דניאלי יאיר דניאל

          @עולה-במסילה
          יצרתי לך - בעזרת 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
          

          e0ac8a21-6100-4afe-83f5-dcf99c283027-image.png 0eda229e-2e5c-444c-af5e-5a499d7e7876-image.png

          ע מנותק
          ע מנותק
          עולה במסילה
          כתב נערך לאחרונה על ידי
          #8

          @יאיר-דניאל תודה רבה על הקוד שכתבת בשבילי
          אבל זה לא נותן לי מענה מיידי כי אני צריך שהמאקרו יתן לי אפשרות לבחור איזה גופן ברצוני להחליף ואח"כ יתן לי את האופציה באיזה גופן לבחור
          לאחר ניסיתי את הקוד שהבאת הוא נותן רק את האופציה לאיזה גופן לשנות אבל הוא משנה את כל המסמך ולא גופן ספציפי בגופן אחר
          תודה רבה

          יאיר דניאלי תגובה 1 תגובה אחרונה
          0
          • ע עולה במסילה

            @יאיר-דניאל תודה רבה על הקוד שכתבת בשבילי
            אבל זה לא נותן לי מענה מיידי כי אני צריך שהמאקרו יתן לי אפשרות לבחור איזה גופן ברצוני להחליף ואח"כ יתן לי את האופציה באיזה גופן לבחור
            לאחר ניסיתי את הקוד שהבאת הוא נותן רק את האופציה לאיזה גופן לשנות אבל הוא משנה את כל המסמך ולא גופן ספציפי בגופן אחר
            תודה רבה

            יאיר דניאלי מנותק
            יאיר דניאלי מנותק
            יאיר דניאל
            כתב נערך לאחרונה על ידי
            #9

            @עולה-במסילה אתה יכול לסמן קטע - ואז להפעיל את המאקרו - והוא יחליף רק את אותו הקטע

            ע תגובה 1 תגובה אחרונה
            0
            • יאיר דניאלי יאיר דניאל

              @עולה-במסילה אתה יכול לסמן קטע - ואז להפעיל את המאקרו - והוא יחליף רק את אותו הקטע

              ע מנותק
              ע מנותק
              עולה במסילה
              כתב נערך לאחרונה על ידי
              #10

              @יאיר-דניאל הבעיה היא שכל קטע מורכב משני גופנים כך שלעבוד על כל קטע בנפרד הוא כמו לעבוד על כל מסמך בנפרד ולהגדיר את הגופנים אותן אני מעונין להחליף...

              יאיר דניאלי תגובה 1 תגובה אחרונה
              0
              • ע עולה במסילה

                @יאיר-דניאל הבעיה היא שכל קטע מורכב משני גופנים כך שלעבוד על כל קטע בנפרד הוא כמו לעבוד על כל מסמך בנפרד ולהגדיר את הגופנים אותן אני מעונין להחליף...

                יאיר דניאלי מנותק
                יאיר דניאלי מנותק
                יאיר דניאל
                כתב נערך לאחרונה על ידי
                #11

                @עולה-במסילה הבנתי - אנסה לשפר את זה.

                יאיר דניאלי תגובה 1 תגובה אחרונה
                0
                • יאיר דניאלי יאיר דניאל

                  @עולה-במסילה הבנתי - אנסה לשפר את זה.

                  יאיר דניאלי מנותק
                  יאיר דניאלי מנותק
                  יאיר דניאל
                  כתב נערך לאחרונה על ידי יאיר דניאל
                  #12

                  @עולה-במסילה

                  הנה בכבוד:

                  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
                  

                  זה עובד כך - תמונות בספויילר

                  4cdb8855-0815-4bbc-8af7-a663a92f2931-image.png
                  3c7116dc-e525-4c44-bd9b-ba7833317db2-image.png
                  53a647f1-eccc-4800-8591-c95458306e00-image.png

                  תגובה 1 תגובה אחרונה
                  1
                  • יאיר דניאלי מנותק
                    יאיר דניאלי מנותק
                    יאיר דניאל
                    כתב נערך לאחרונה על ידי יאיר דניאל
                    #13

                    ואם אתה רוצה יותר משוכלל - שלא תצטרך להקליד אפילו את שם הגופן להחלפה - אז הנה.

                    פשוט תפעיל את הקובץ המצורף
                    החלפת גופנים.exe

                    או שתכניס את הקובץ הזה - לתיקיית הטמפלס של אופיס (הקובץ למעלה ⏫ - עושה את זה אוטומטית)

                    החלפת גופנים.dotm

                    כך זה נראה:
                    c8abf13f-ba1c-4a68-8d02-38c8044bae4b-image.png
                    המשך התהליך זהה למאקרו הקודם

                    ע תגובה 1 תגובה אחרונה
                    2
                    • יאיר דניאלי יאיר דניאל

                      ואם אתה רוצה יותר משוכלל - שלא תצטרך להקליד אפילו את שם הגופן להחלפה - אז הנה.

                      פשוט תפעיל את הקובץ המצורף
                      החלפת גופנים.exe

                      או שתכניס את הקובץ הזה - לתיקיית הטמפלס של אופיס (הקובץ למעלה ⏫ - עושה את זה אוטומטית)

                      החלפת גופנים.dotm

                      כך זה נראה:
                      c8abf13f-ba1c-4a68-8d02-38c8044bae4b-image.png
                      המשך התהליך זהה למאקרו הקודם

                      ע מנותק
                      ע מנותק
                      עולה במסילה
                      כתב נערך לאחרונה על ידי
                      #14

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

                      תגובה 1 תגובה אחרונה
                      0

                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • חוקי הפורום
                      • פופולרי
                      • לא נפתר
                      • משתמשים
                      • חיפוש גוגל בפורום
                      • צור קשר