דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • 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. שיתוף | אינצקלופדיה שיתופית עבור קודים של מאקרו - איך עושים את....

שיתוף | אינצקלופדיה שיתופית עבור קודים של מאקרו - איך עושים את....

מתוזמן נעוץ נעול הועבר עזרה הדדית - וורד
50 פוסטים 6 כותבים 1.7k צפיות 6 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • P pcinfogmach

    אינצקלופדיה שיתופית למאקרו (VBA)

    פוסט זה נועד כדי לשתף קטעי קוד מוצלחים עבור פונקציות שונות במאקרו (VBA) עבור תוכנת מיקרוסופט וורד.
    הציבור מוזמן לשתף 🙂
    נ.ב. אינני מתכנן לענות על שאלות רק להעלות קטעי קוד שימושיים

    1. קוד לסימון המילה הראשונה בפיסקה בכל המסמך
    2. קוד להוספת צורה במיקום הנוכחי של הסמן במסמך
    3. איך לעשות פעולות נסתרות מעיני המשתמש - ולהגביר את מהירות הקוד
    4. קוד להתקנת תבנית בתוך תיקיית ההתחלה של וורד
    5. קוד ליצירת לולאה - עד מילוי תנאי מסויים
    6. קוד להוספת סגנון והסרתו
    7. לולאה שחוזרת על עצמה מספר פעמים קצוב
    8. טיפול בשגיאות
    9. אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש).
    10. איך לשנות את תחום הטקסט המסומן

    11.קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט
    12. קוד עיצוב פיסקה כנהוג בספרי קודש, חלון, מילה ראשונה, ומרכוז שורה אחרונה
    13. הגדלה והקטנה בחצי נקודה על טקסט נבחר
    14. כותרות צד
    15.כמה מוסכמויות בכתיבת קוד:
    16. מה עושים כאשר הטקסט בתוך userform לא מופיע
    17.חיפוש והחלפה במסמכים מרובים
    18. פתיחת מסמכים מרובים
    19. הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.
    20.הערות ברצף ו - הסרת הערות ברצף
    21. הקטנת והגדלת סוגריים
    22. איך ליצור userform - מדריך
    23.הגדל רווחים בין מילים
    23.הסרת כל הרווחים בטקסט שסומן
    24. איך ליצור range נפרד עבור כל טור בהערות שוליים
    25. שינוי מרווח בין טורים רק בהערות שוליים
    26. קוד חמוד להעתקת כל המודולים מתבנית אחת לשניה
    עריכה נוכחית:
    27. קוד לשינוי שפת המקלדת לעברית
    28. קוד לייצוא שמות הקבצים מתוך תיקייה

    מושגי יסוד בVBA

    נא לא לשאול שאלות

    1. אני לא הולך להסביר פה איך ליצור מודול ולפתוח את הvba לזה תעשו שיעורי בית לבד.

    2. כל קוד חייב להיות בתוך sub עם שם

    3. בניית מאקרו הוא בעצם במו בניית פאזל, לפאזל הזה יש שלושה סוגי חלקים: אובייקטים הגדרות ופעולות.
      אובייקטים הם חלקי המסמך כגון פיסקאות וכו'. הגדרות הם הגדרות הפיסקה או הגופן וכו'. ופעולות הם פעולות שנעשה עם האובייקט כגון להעתיק אותו.
      דוגמא: selection.delete זוהי פעולה מחיקה על הטקסט המסומן
      "Selection.font.Name = "Arial זוהי פעולה שמגדירה את שם הפונט של הטקסט המסומן ל- Arial
      פעולות באות אחרי נקודה. מאפיינים באים אחרי =

    4. הגדרת משתנים כמה כללים טובים:
      שם המשתנה חייב להתחיל באות
      אין להוסיף רווחים לשם המשתנה
      אין לתת למשתנה שם זהה לשם המאקרו
      אין לתת למשתנים שמות שמורים כגון Save
      מומלץ לתת שם המתאר באופן מדויק את משמעות המשתנה

    5. משתנה מוגדר על ידי Dim "שם המשתנה" As "סוג המשתנה"
      לדוגמא Dim MyString As String משתנה בשם MyString שהוגדר כמחרוזת טקסט

    6. סוגי משתנים
      Integer - מאפשר לאחסן בתוכו מספרים שלמים
      long - כמו integer רק עבור מספרים גדולים מ32,000
      Double - מאפשר לאחסן בתוכו מספרים עשרוניים
      String - מאפשר לאחסן בתוכו מחרוזת טקסט
      Range - מאפשר לאחסן בתוכו טווחים
      כמו"כ כל אובייקט במסמך יכול להיות משתנה ג"כ

    7. אחרי Dim - הכרזה של המשתנה יש לתת לו ערך
      לדוגמא
      Dim Mystring As String
      "Mystring = "abc
      הערה הזנה של טקסט צמיד תהיה בתוך מירכאות משא"כ במספרים.
      בקביעת משתני טווח יש להוסיף את המילה set
      לדוגמא
      Dim myrange As Range
      Set myrange = Selection.range
      המשתנה של הטווח הוגדר כטווח הטקסט המסומן

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

    אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש)

    Dim interaction As VbMsgBoxResult
    interaction = MsgBox("הזן כאן הוראות למשתמש", vbQuestion + vbYesNoCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "הזן כאן כותרת")
    
    Select Case interaction
        Case vbCancel
            ' המשתמש לחץ על ביטול
            MsgBox "הפעולה בוטלה"
    exit sub
    
        Case vbYes
            ' המשתמש לחץ על כן
            'הכניסו איזשהו קוד כאן
    
        Case vbNo
            ' המשתמש לחץ על לא
            'הכניסו איזשהו קוד כאן
    End Select
    

    אם ברצונכם לפצל את הקוד של תוצאות התגובות עשו זאת כך.

    Dim interaction As VbMsgBoxResult
    interaction = MsgBox("הזן כאן הוראות למשתמש", vbQuestion + vbYesNoCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "הזן כאן כותרת")
    
    if interaction = vbCancel then
     ' המשתמש לחץ על ביטול
    "הפעולה בוטלה" msgbox
    exit sub
    end if
    
    if interaction = vbYes then
     ' המשתמש לחץ על כן
    'הכניסו איזשהו קוד כאן
    end if
    
    if interaction = vbNo then
     ' המשתמש לחץ על לא
    'הכניסו איזשהו קוד כאן
    end if
    
    

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

    If Dialogs(wdDialogFormatFont).Show = False Then Exit Sub
    

    עדכון:
    כדי להראות למשתמש הודעה במשך הרצת המאקרו

    Application.StatusBar = "ההודעה שלי"
    

    אפשר להפסיק את הצגת ההודעה על ידי הכנסתו ללואה

    תגובה 1 תגובה אחרונה
    2
    • P pcinfogmach

      אינצקלופדיה שיתופית למאקרו (VBA)

      פוסט זה נועד כדי לשתף קטעי קוד מוצלחים עבור פונקציות שונות במאקרו (VBA) עבור תוכנת מיקרוסופט וורד.
      הציבור מוזמן לשתף 🙂
      נ.ב. אינני מתכנן לענות על שאלות רק להעלות קטעי קוד שימושיים

      1. קוד לסימון המילה הראשונה בפיסקה בכל המסמך
      2. קוד להוספת צורה במיקום הנוכחי של הסמן במסמך
      3. איך לעשות פעולות נסתרות מעיני המשתמש - ולהגביר את מהירות הקוד
      4. קוד להתקנת תבנית בתוך תיקיית ההתחלה של וורד
      5. קוד ליצירת לולאה - עד מילוי תנאי מסויים
      6. קוד להוספת סגנון והסרתו
      7. לולאה שחוזרת על עצמה מספר פעמים קצוב
      8. טיפול בשגיאות
      9. אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש).
      10. איך לשנות את תחום הטקסט המסומן

      11.קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט
      12. קוד עיצוב פיסקה כנהוג בספרי קודש, חלון, מילה ראשונה, ומרכוז שורה אחרונה
      13. הגדלה והקטנה בחצי נקודה על טקסט נבחר
      14. כותרות צד
      15.כמה מוסכמויות בכתיבת קוד:
      16. מה עושים כאשר הטקסט בתוך userform לא מופיע
      17.חיפוש והחלפה במסמכים מרובים
      18. פתיחת מסמכים מרובים
      19. הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.
      20.הערות ברצף ו - הסרת הערות ברצף
      21. הקטנת והגדלת סוגריים
      22. איך ליצור userform - מדריך
      23.הגדל רווחים בין מילים
      23.הסרת כל הרווחים בטקסט שסומן
      24. איך ליצור range נפרד עבור כל טור בהערות שוליים
      25. שינוי מרווח בין טורים רק בהערות שוליים
      26. קוד חמוד להעתקת כל המודולים מתבנית אחת לשניה
      עריכה נוכחית:
      27. קוד לשינוי שפת המקלדת לעברית
      28. קוד לייצוא שמות הקבצים מתוך תיקייה

      מושגי יסוד בVBA

      נא לא לשאול שאלות

      1. אני לא הולך להסביר פה איך ליצור מודול ולפתוח את הvba לזה תעשו שיעורי בית לבד.

      2. כל קוד חייב להיות בתוך sub עם שם

      3. בניית מאקרו הוא בעצם במו בניית פאזל, לפאזל הזה יש שלושה סוגי חלקים: אובייקטים הגדרות ופעולות.
        אובייקטים הם חלקי המסמך כגון פיסקאות וכו'. הגדרות הם הגדרות הפיסקה או הגופן וכו'. ופעולות הם פעולות שנעשה עם האובייקט כגון להעתיק אותו.
        דוגמא: selection.delete זוהי פעולה מחיקה על הטקסט המסומן
        "Selection.font.Name = "Arial זוהי פעולה שמגדירה את שם הפונט של הטקסט המסומן ל- Arial
        פעולות באות אחרי נקודה. מאפיינים באים אחרי =

      4. הגדרת משתנים כמה כללים טובים:
        שם המשתנה חייב להתחיל באות
        אין להוסיף רווחים לשם המשתנה
        אין לתת למשתנה שם זהה לשם המאקרו
        אין לתת למשתנים שמות שמורים כגון Save
        מומלץ לתת שם המתאר באופן מדויק את משמעות המשתנה

      5. משתנה מוגדר על ידי Dim "שם המשתנה" As "סוג המשתנה"
        לדוגמא Dim MyString As String משתנה בשם MyString שהוגדר כמחרוזת טקסט

      6. סוגי משתנים
        Integer - מאפשר לאחסן בתוכו מספרים שלמים
        long - כמו integer רק עבור מספרים גדולים מ32,000
        Double - מאפשר לאחסן בתוכו מספרים עשרוניים
        String - מאפשר לאחסן בתוכו מחרוזת טקסט
        Range - מאפשר לאחסן בתוכו טווחים
        כמו"כ כל אובייקט במסמך יכול להיות משתנה ג"כ

      7. אחרי Dim - הכרזה של המשתנה יש לתת לו ערך
        לדוגמא
        Dim Mystring As String
        "Mystring = "abc
        הערה הזנה של טקסט צמיד תהיה בתוך מירכאות משא"כ במספרים.
        בקביעת משתני טווח יש להוסיף את המילה set
        לדוגמא
        Dim myrange As Range
        Set myrange = Selection.range
        המשתנה של הטווח הוגדר כטווח הטקסט המסומן

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

      איך לשנות את תחום הטקסט המסומן

      'הקטנת תחום הטקסט המוסמן ב -1 מהסוף
      Selection.MoveEnd wdCharacter, -1
      'או
      With Selection.Range
      .End = .End - 1
         .Select
         End With
      
      'הגדלת תחום הטקסט המוסמן ב -1 מהסוף
      Selection.MoveEnd wdCharacter, 1
      'או
      With Selection.Range
      .End = .End + 1
         .Select
         End With
      
      'הקטנת תחום הטקסט המוסמן ב -1 מההתחלה
      Selection.Movestart wdCharacter, 1
      'או
      With Selection.Range
      .Start = .Start + 1
         .Select
         End With
      
      'הגדלת תחום הטקסט המוסמן ב -1 מההתחלה
      Selection.MoveEnd wdCharacter, -1
      'או
      With Selection.Range
      .Start = .Start - 1
         .Select
         End With
      
      'העברת הסמן לפני הטקסט המסומן
      Selection.Collapse Direction:=wdCollapseStart
      
      'העברת הסמן אחרי הטקסט המסומן
        Selection.Collapse Direction:=wdCollapseend
      
      תגובה 1 תגובה אחרונה
      2
      • P pcinfogmach

        אינצקלופדיה שיתופית למאקרו (VBA)

        פוסט זה נועד כדי לשתף קטעי קוד מוצלחים עבור פונקציות שונות במאקרו (VBA) עבור תוכנת מיקרוסופט וורד.
        הציבור מוזמן לשתף 🙂
        נ.ב. אינני מתכנן לענות על שאלות רק להעלות קטעי קוד שימושיים

        1. קוד לסימון המילה הראשונה בפיסקה בכל המסמך
        2. קוד להוספת צורה במיקום הנוכחי של הסמן במסמך
        3. איך לעשות פעולות נסתרות מעיני המשתמש - ולהגביר את מהירות הקוד
        4. קוד להתקנת תבנית בתוך תיקיית ההתחלה של וורד
        5. קוד ליצירת לולאה - עד מילוי תנאי מסויים
        6. קוד להוספת סגנון והסרתו
        7. לולאה שחוזרת על עצמה מספר פעמים קצוב
        8. טיפול בשגיאות
        9. אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש).
        10. איך לשנות את תחום הטקסט המסומן

        11.קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט
        12. קוד עיצוב פיסקה כנהוג בספרי קודש, חלון, מילה ראשונה, ומרכוז שורה אחרונה
        13. הגדלה והקטנה בחצי נקודה על טקסט נבחר
        14. כותרות צד
        15.כמה מוסכמויות בכתיבת קוד:
        16. מה עושים כאשר הטקסט בתוך userform לא מופיע
        17.חיפוש והחלפה במסמכים מרובים
        18. פתיחת מסמכים מרובים
        19. הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.
        20.הערות ברצף ו - הסרת הערות ברצף
        21. הקטנת והגדלת סוגריים
        22. איך ליצור userform - מדריך
        23.הגדל רווחים בין מילים
        23.הסרת כל הרווחים בטקסט שסומן
        24. איך ליצור range נפרד עבור כל טור בהערות שוליים
        25. שינוי מרווח בין טורים רק בהערות שוליים
        26. קוד חמוד להעתקת כל המודולים מתבנית אחת לשניה
        עריכה נוכחית:
        27. קוד לשינוי שפת המקלדת לעברית
        28. קוד לייצוא שמות הקבצים מתוך תיקייה

        מושגי יסוד בVBA

        נא לא לשאול שאלות

        1. אני לא הולך להסביר פה איך ליצור מודול ולפתוח את הvba לזה תעשו שיעורי בית לבד.

        2. כל קוד חייב להיות בתוך sub עם שם

        3. בניית מאקרו הוא בעצם במו בניית פאזל, לפאזל הזה יש שלושה סוגי חלקים: אובייקטים הגדרות ופעולות.
          אובייקטים הם חלקי המסמך כגון פיסקאות וכו'. הגדרות הם הגדרות הפיסקה או הגופן וכו'. ופעולות הם פעולות שנעשה עם האובייקט כגון להעתיק אותו.
          דוגמא: selection.delete זוהי פעולה מחיקה על הטקסט המסומן
          "Selection.font.Name = "Arial זוהי פעולה שמגדירה את שם הפונט של הטקסט המסומן ל- Arial
          פעולות באות אחרי נקודה. מאפיינים באים אחרי =

        4. הגדרת משתנים כמה כללים טובים:
          שם המשתנה חייב להתחיל באות
          אין להוסיף רווחים לשם המשתנה
          אין לתת למשתנה שם זהה לשם המאקרו
          אין לתת למשתנים שמות שמורים כגון Save
          מומלץ לתת שם המתאר באופן מדויק את משמעות המשתנה

        5. משתנה מוגדר על ידי Dim "שם המשתנה" As "סוג המשתנה"
          לדוגמא Dim MyString As String משתנה בשם MyString שהוגדר כמחרוזת טקסט

        6. סוגי משתנים
          Integer - מאפשר לאחסן בתוכו מספרים שלמים
          long - כמו integer רק עבור מספרים גדולים מ32,000
          Double - מאפשר לאחסן בתוכו מספרים עשרוניים
          String - מאפשר לאחסן בתוכו מחרוזת טקסט
          Range - מאפשר לאחסן בתוכו טווחים
          כמו"כ כל אובייקט במסמך יכול להיות משתנה ג"כ

        7. אחרי Dim - הכרזה של המשתנה יש לתת לו ערך
          לדוגמא
          Dim Mystring As String
          "Mystring = "abc
          הערה הזנה של טקסט צמיד תהיה בתוך מירכאות משא"כ במספרים.
          בקביעת משתני טווח יש להוסיף את המילה set
          לדוגמא
          Dim myrange As Range
          Set myrange = Selection.range
          המשתנה של הטווח הוגדר כטווח הטקסט המסומן

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

        קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט

        רק צריך לוודא שהוא יהיה במודול בפני עצמו כדי למנוע בעיות ושלא יהיה מופע כפול של option Explicit

        Option Explicit
        
        Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
        
        Sub OpenWebPage()
            Dim url As String
            url = "הכנס כאן את כתובת האתר תיקייה או הקובץ באופן מלא" 'Replace with the URL of the webpage you want to open
            ShellExecute 0, "open", url, vbNullString, vbNullString, vbNormalFocus
        End Sub
        
        תגובה 1 תגובה אחרונה
        1
        • P pcinfogmach

          אינצקלופדיה שיתופית למאקרו (VBA)

          פוסט זה נועד כדי לשתף קטעי קוד מוצלחים עבור פונקציות שונות במאקרו (VBA) עבור תוכנת מיקרוסופט וורד.
          הציבור מוזמן לשתף 🙂
          נ.ב. אינני מתכנן לענות על שאלות רק להעלות קטעי קוד שימושיים

          1. קוד לסימון המילה הראשונה בפיסקה בכל המסמך
          2. קוד להוספת צורה במיקום הנוכחי של הסמן במסמך
          3. איך לעשות פעולות נסתרות מעיני המשתמש - ולהגביר את מהירות הקוד
          4. קוד להתקנת תבנית בתוך תיקיית ההתחלה של וורד
          5. קוד ליצירת לולאה - עד מילוי תנאי מסויים
          6. קוד להוספת סגנון והסרתו
          7. לולאה שחוזרת על עצמה מספר פעמים קצוב
          8. טיפול בשגיאות
          9. אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש).
          10. איך לשנות את תחום הטקסט המסומן

          11.קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט
          12. קוד עיצוב פיסקה כנהוג בספרי קודש, חלון, מילה ראשונה, ומרכוז שורה אחרונה
          13. הגדלה והקטנה בחצי נקודה על טקסט נבחר
          14. כותרות צד
          15.כמה מוסכמויות בכתיבת קוד:
          16. מה עושים כאשר הטקסט בתוך userform לא מופיע
          17.חיפוש והחלפה במסמכים מרובים
          18. פתיחת מסמכים מרובים
          19. הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.
          20.הערות ברצף ו - הסרת הערות ברצף
          21. הקטנת והגדלת סוגריים
          22. איך ליצור userform - מדריך
          23.הגדל רווחים בין מילים
          23.הסרת כל הרווחים בטקסט שסומן
          24. איך ליצור range נפרד עבור כל טור בהערות שוליים
          25. שינוי מרווח בין טורים רק בהערות שוליים
          26. קוד חמוד להעתקת כל המודולים מתבנית אחת לשניה
          עריכה נוכחית:
          27. קוד לשינוי שפת המקלדת לעברית
          28. קוד לייצוא שמות הקבצים מתוך תיקייה

          מושגי יסוד בVBA

          נא לא לשאול שאלות

          1. אני לא הולך להסביר פה איך ליצור מודול ולפתוח את הvba לזה תעשו שיעורי בית לבד.

          2. כל קוד חייב להיות בתוך sub עם שם

          3. בניית מאקרו הוא בעצם במו בניית פאזל, לפאזל הזה יש שלושה סוגי חלקים: אובייקטים הגדרות ופעולות.
            אובייקטים הם חלקי המסמך כגון פיסקאות וכו'. הגדרות הם הגדרות הפיסקה או הגופן וכו'. ופעולות הם פעולות שנעשה עם האובייקט כגון להעתיק אותו.
            דוגמא: selection.delete זוהי פעולה מחיקה על הטקסט המסומן
            "Selection.font.Name = "Arial זוהי פעולה שמגדירה את שם הפונט של הטקסט המסומן ל- Arial
            פעולות באות אחרי נקודה. מאפיינים באים אחרי =

          4. הגדרת משתנים כמה כללים טובים:
            שם המשתנה חייב להתחיל באות
            אין להוסיף רווחים לשם המשתנה
            אין לתת למשתנה שם זהה לשם המאקרו
            אין לתת למשתנים שמות שמורים כגון Save
            מומלץ לתת שם המתאר באופן מדויק את משמעות המשתנה

          5. משתנה מוגדר על ידי Dim "שם המשתנה" As "סוג המשתנה"
            לדוגמא Dim MyString As String משתנה בשם MyString שהוגדר כמחרוזת טקסט

          6. סוגי משתנים
            Integer - מאפשר לאחסן בתוכו מספרים שלמים
            long - כמו integer רק עבור מספרים גדולים מ32,000
            Double - מאפשר לאחסן בתוכו מספרים עשרוניים
            String - מאפשר לאחסן בתוכו מחרוזת טקסט
            Range - מאפשר לאחסן בתוכו טווחים
            כמו"כ כל אובייקט במסמך יכול להיות משתנה ג"כ

          7. אחרי Dim - הכרזה של המשתנה יש לתת לו ערך
            לדוגמא
            Dim Mystring As String
            "Mystring = "abc
            הערה הזנה של טקסט צמיד תהיה בתוך מירכאות משא"כ במספרים.
            בקביעת משתני טווח יש להוסיף את המילה set
            לדוגמא
            Dim myrange As Range
            Set myrange = Selection.range
            המשתנה של הטווח הוגדר כטווח הטקסט המסומן

          P מנותק
          P מנותק
          pcinfogmach
          מדריכים
          כתב ב נערך לאחרונה על ידי pcinfogmach
          #13

          קוד עיצוב פיסקה כנהוג בספרי קודש - מילה ראשונה, חלון, ומירכוז שורה אחרונה:
          קרדיט ל- @NykUser @מאקרו ו-@pcinfogmach

          מצו"ב שני שיטות:

          בשיטה הראשונה - עובד יותר חלק ומקצועי אבל כדי לערוך שינויים צריך להריץ שוב את המאקרו כדי לתקן את העיצוב.

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


          שיטה ראשונה:
          חלון.bas
          שורה_אחרונה.bas

          Sub עיצוב_מילה_ראשונה_לפי_סגנון()
          
             Dim myDialog As Dialog, para As Paragraph, rng As Range, styl As String
             
              styl = ActiveDocument.Styles(wdStyleStrong).NameLocal
              Set rng = Selection.Range
              Set myDialog = Dialogs(wdDialogFormatStyle)
              
              
              Selection.MoveUp Unit:=wdParagraph, Count:=1
              
              With myDialog
                  .Name = styl
                  .Display
                  End With
                        
             For Each para In rng.Paragraphs
              With para.Range
              .End = .Start
              .MoveEndUntil " ", wdForward
              .Select
              End With
              myDialog.Execute
              Next para
              
          End Sub
          
          Sub עיצוב_מילה_ראשונה_ללא_סגנון()
          
             Dim myDialog As Dialog, para As Paragraph, rng As Range
             
              Set rng = Selection.Range
              Set myDialog = Dialogs(wdDialogFormatFont)
              
              myDialog.Display
                     
             For Each para In rng.Paragraphs
              With para.Range
              .End = .Start
              .MoveEndUntil " ", wdForward
              .Select
              End With
              myDialog.Execute
              Next para
              
          End Sub
          
          Sub הסר_עיצוב_מילה_ראשונה()
          
             Dim para As Paragraph, rng, mrng As Range
                     
             Set rng = Selection.Range
             
             For Each para In rng.Paragraphs
               
              With para.Range
                  .Collapse: .MoveUntil cset:=" ": .MoveEnd: .Collapse Direction:=wdCollapseEnd
                  .move Unit:=wdCharacter, Count:=1
                  .Select
              End With
                
              Selection.CopyFormat
              Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
              Selection.PasteFormat
              Application.ScreenRefresh
              Next para
              
          End Sub
          

          שיטה שניה:

          Option Explicit
          '
          '
          '
          'עיצוב חלון על עיקרון מסגרת
          ' עיצוב מילה ראשונה על עיקרון של החלת סגנון
          ' עיצוב שורה אחרונה על עיקרון של שלמה מימות ממתמחים טופ
          '
          
          
          Private Sub עיצוב_מהיר_כל_העיצובים()
          
          'קביעת הטווח
          Dim slctd As Range
          Set slctd = Selection.Range
          slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
          
          slctd.Select
          
          'הוסף סימנים ומרכז שורה אחרונה
          Call part1(slctd)
          
          'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
              slctd.InsertBefore "$$$$$$$$$" & Chr(13)
          
          'הכנות בשביל עיצוב מילה ראשונה או חלון
          Call part2(slctd)
          'יצירת הסגנונות אם צריך
          Call part3A
          Call part3B
          'החלת סגנון חלון
          Call part4A
          'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
          Call part4c
          'ניקוי שאריות
          Call part5
          'msgbox תיקון הסטייה
          
          End Sub
          Private Sub עיצוב_מהיר_שורה_אחרונה_ומילה_ראשונה_בלי_חלון()
          
          'קביעת הטווח
          Dim slctd As Range
          Set slctd = Selection.Range
          slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
          
          'הוסף סימנים ומרכז שורה אחרונה
          Call part1(slctd)
          
          'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
              slctd.InsertBefore "$$$$$$$$$" & Chr(13)
          
          'הכנות בשביל עיצוב מילה ראשונה או חלון
          Call part2(slctd)
          
          'יצירת הסגנונות אם צריך
          Call part3B
          
          'החלת סגנון מילה ראשונה
          Call part4B
          
          'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
          Call part4c
          
          'ניקוי שאריות
          Call part5
          
          End Sub
          
          Private Sub עיצוב_מהיר_הסר_את_כל_העיצובים()
          
          Call part6
          Call הסר_מרכוז_שורה_אחרונה
          
          End Sub
          
          Private Sub עיצוב_מהיר_מילה_ראשונה_עם_חלון()
          
          'קביעת הטווח
          Dim slctd As Range
          Set slctd = Selection.Range
          slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
          
          'הוסף סימנים
          Call part1B(slctd)
          
          'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
              slctd.InsertBefore "$$$$$$$$$" & Chr(13)
          
          
          'הכנות בשביל עיצוב מילה ראשונה או חלון
          Call part2(slctd)
          'יצירת הסגנונות אם צריך
          Call part3A
          Call part3B
          'החלת סגנון חלון
          Call part4A
          'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
          Call part4c
          'ניקוי שאריות
          Call part5
          
          
          
          
          End Sub
          Private Sub עיצוב_מהיר_מילה_ראשונה_בלי_חלון()
          
          'קביעת הטווח
          Dim slctd As Range
          Set slctd = Selection.Range
          slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
          
          'הוסף סימנים
          Call part1B(slctd)
          
          'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
              slctd.InsertBefore "$$$$$$$$$" & Chr(13)
          
          'הכנות בשביל עיצוב מילה ראשונה או חלון
          Call part2(slctd)
          
          'יצירת הסגנונות אם צריך
          Call part3B
          
          'החלת סגנון מילה ראשונה
          Call part4B
          
          'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
          Call part4c
          
          'ניקוי שאריות
          Call part5
          
          End Sub
          
          Private Sub עיצוב_מהיר_מרכוז_שורה_אחרונה()
          
          'קביעת הטווח
          Dim slctd As Range
          Set slctd = Selection.Range
          slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
          
          'הוסף סימנים ומרכז שורה אחרונה
          Call part1(slctd)
          
          Call part5
          End Sub
          Private Sub הסר_מילה_ראשונה_וחלון()
          
          Call part6
          
          End Sub
          Private Sub הסר_מרכוז_שורה_אחרונה()
          
          'קביעת הטווח
          Dim slctd As Range
          Set slctd = Selection.Range
          slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
          
          'הוסף סימנים בפיסקאות שנבחרו
          slctd.Find.Execute _
          FindText:="(*)(^t)(^13)", _
          ReplaceWith:="\1+++++++\3", _
          Forward:=True, Wrap:=wdFindStop, MatchWildcards:=True, _
          Replace:=wdReplaceAll
          
          'חפש והחלף לפי סימנים
          Selection.Find.ClearFormatting
          Selection.Find.Replacement.ClearFormatting
              
              With Selection.Find.Replacement.ParagraphFormat
                  .SpaceBeforeAuto = False
                  .SpaceAfterAuto = False
                  .Alignment = wdAlignParagraphJustify
              End With
              With Selection.Find
                  .Text = "(*)(+++++++)(^13)"
                  .Replacement.Text = "\1\3"
                  .Forward = True
                  .Wrap = wdFindContinue
                  .Format = True
                  .MatchCase = False
                  .MatchWholeWord = False
                  .MatchKashida = False
                  .MatchDiacritics = False
                  .MatchAlefHamza = False
                  .MatchControl = False
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              Selection.Find.Execute Replace:=wdReplaceAll
              
          End Sub
          
          Sub part1(slctd As Range) ' Do something with slctd here
          '
          'מרכוז שורה אחרונה
          '
          
              'שינוי הטאבים ל- 0
              Selection.ParagraphFormat.TabStops.ClearAll
              ActiveDocument.DefaultTabStop = CentimetersToPoints(0)
              
          'החלת עיצוב שורה אחרונה
              Dim p As Paragraph
              For Each p In slctd.Paragraphs
                  ' Check if paragraph contains more than one line
                  If Not p.Range.ComputeStatistics(wdStatisticLines) > 1 Then
                          p.Range.InsertBefore "$#$#$#"
                              GoTo nxt
                          End If
                          
                          p.Range.ParagraphFormat.Alignment = wdAlignParagraphDistribute
                                  p.Range.Characters.Last.Previous = vbTab
                         
                  If Not p.Range.ComputeStatistics(wdStatisticLines) > 2 _
                  Or Not p.Range.ComputeStatistics(wdStatisticLines) > 3 Then
                      p.Range.InsertBefore "$#$#$#"
                      End If
          nxt:
                      Next p
          End Sub
          Sub part1B(slctd As Range) ' Do something with slctd here
          '
          'מרכוז שורה אחרונה
          '
          
              'שינוי הטאבים ל- 0
              Selection.ParagraphFormat.TabStops.ClearAll
              ActiveDocument.DefaultTabStop = CentimetersToPoints(0)
              
          'החלת עיצוב שורה אחרונה
              Dim p As Paragraph
              For Each p In slctd.Paragraphs
                  ' Check if paragraph contains more than one line
                  If Not p.Range.ComputeStatistics(wdStatisticLines) > 1 _
                  Or Not p.Range.ComputeStatistics(wdStatisticLines) > 2 _
                  Or Not p.Range.ComputeStatistics(wdStatisticLines) > 3 Then
                          p.Range.InsertBefore "$#$#$#"
                              
          End If
                      Next p
          End Sub
                      
          Private Sub part2(slctd As Range)
          '
          'הכנות בשביל עיצוב מילה ראשונה או חלון
          '
          
          'להוסיף פתרון בעיות עם סימני הערות שוליים צריך
                  
          'החלת סימן החרגה עבור פיסקאות מודגשות (כותרות)
          Selection.Find.ClearFormatting
              Selection.Find.Replacement.ClearFormatting
          
          Selection.Find.ClearFormatting
              Selection.Find.Replacement.ClearFormatting
              With Selection.Find
                  .Text = "*^13"
                  .Replacement.Text = "$$$$$$$$$^&"
                  .Forward = True
                  .Wrap = wdFindContinue
                  .Format = True
                  .Font.BoldBi = True
                  .Font.Bold = True
                  .MatchCase = False
                  .MatchWholeWord = False
                  .MatchKashida = False
                  .MatchDiacritics = False
                  .MatchAlefHamza = False
                  .MatchControl = False
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              
              Selection.Find.Execute Replace:=wdReplaceAll
              
          'סימון המילה הראושנה והפרדתו מהפיסקה שאחריו (כדי שהסגנון יחול רק עליו ולא על כל הפיסקה
          'אין אפשרות שיחול רק עליו בלי זה כי צריך להחיל עליו מסגרת
          'אין בעיה במה שהואנפרד כי המסגרת מוגדרת לקבץ אותו יחד עם הפיסקה שאחריו
              
              slctd.Find.Execute FindText:="(^13)([!$]@ )", ReplaceWith:="\1^+^+^+^+\2^+^+^+^+^p", Forward:=True, Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
          
          End Sub
          
          Private Sub part3A()
          Dim styl As Style
          
          '
          'יצירת סגנון מילה ראשונה עם חלון
          '
          
                  'הוזזת הסמן לתחילת הטווח כדי למנוע עיצוב המילים המסומנות
                  Selection.Collapse Direction:=wdCollapseStart
          
          'בדיקה אם הסגנון כבר קיים
                  On Error Resume Next
                  Set styl = ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר")
                  On Error GoTo 0
          
          'הודעה למשתמש
          If Not styl Is Nothing Then Exit Sub
          Dim strt As VbMsgBoxResult
          strt = MsgBox("לפני שנחתחיל תצטרכו לבחור עיצוב נפרד עבור סגנון 'מילת פתיח עם חלון עיצוב מהיר'." & vbNewLine & "לאחר יצירת הסגנון תמיד תוכלו לשנותו על ידי לחיצה ימנית על הסגנון בסרגל הסגנונות." & vbNewLine & "כך או כך הלחצן יחיל את הסגנון המבוקש על המילה הראשונה שבכל פיסקה.", _
          vbInformation + vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "יצירת והחלת סגנון 'מילה ראשונה בהערות שוליים'")
          If strt = vbCancel Then Exit Sub
          
                  'בחירת העיצוב
                  Selection.Font.Name = Selection.Font.Name
                      With Dialogs(wdDialogFormatFont)
                          .Update
                          .Font = Selection.Font.Name
                          .FontNameBi = Selection.Font.Name
                          If .Show = False Then Exit Sub
                      End With
                      
                      'יצירת הסגנון
                      ActiveDocument.Styles.Add Name:="מילת פתיח עם חלון עיצוב מהיר", Type:=WdStyleType.wdStyleTypeParagraph
                      ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").Priority = 3
                      ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").QuickStyle = True
                      
                  
                      'הגדרת הסגנון כסגנון עם מסגרת
                      With ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").ParagraphFormat
                          .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
                          .Borders(wdBorderRight).LineStyle = wdLineStyleNone
                          .Borders(wdBorderTop).LineStyle = wdLineStyleNone
                          .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
                                  With .Borders
                                      .DistanceFromTop = 1
                                      .DistanceFromLeft = 4
                                      .DistanceFromBottom = 1
                                      .DistanceFromRight = 4
                                      .Shadow = False
                                  End With
                      End With
                      
                      'הגדרות המסגרת
                      With ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").Frame
                          .TextWrap = True
                          .WidthRule = wdFrameAuto
                          .HeightRule = wdFrameAuto
                          .HorizontalPosition = wdFrameRight
                          .RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
                          .RelativeVerticalPosition = wdRelativeVerticalPositionParagraph
                          .HorizontalDistanceFromText = CentimetersToPoints(0.13)
                          .VerticalDistanceFromText = CentimetersToPoints(0)
                          .LockAnchor = False
                      End With
          
          End Sub
          
          Private Sub part3B()
          Dim styl As Style
          '
          'יצירת סגנון מילה ראשונה בלי חלון
          '
          
                  'הוזזת הסמן לתחילת הטווח כדי למנוע עיצוב המילים המסומנות
                  Selection.Collapse Direction:=wdCollapseStart
          
          'בדיקה אם הסגנון כבר קיים
                  On Error Resume Next
                  Set styl = ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר")
                  On Error GoTo 0
              
          'הודעה למשתמש
          If Not styl Is Nothing Then Exit Sub
          Dim strt As VbMsgBoxResult
          strt = MsgBox("לפני שנחתחיל תצטרכו לבחור עיצוב נפרד עבור סגנון 'מילת פתיח בלי חלון עיצוב מהיר'." & vbNewLine & "לאחר יצירת הסגנון תמיד תוכלו לשנותו על ידי לחיצה ימנית על הסגנון בסרגל הסגנונות." & vbNewLine & "כך או כך הלחצן יחיל את הסגנון המבוקש על המילה הראשונה שבכל פיסקה.", _
          vbInformation + vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "יצירת והחלת סגנון 'מילה ראשונה בהערות שוליים'")
          If strt = vbCancel Then Exit Sub
          
                  'בחירת העיצוב
                  Selection.Font.Name = Selection.Font.Name
                      With Dialogs(wdDialogFormatFont)
                          .Update
                          .Font = Selection.Font.Name
                          .FontNameBi = Selection.Font.Name
                          If .Show = False Then Exit Sub
                      End With
                      
                      'יצירת הסגנון
                      ActiveDocument.Styles.Add Name:="מילת פתיח בלי חלון עיצוב מהיר", Type:=WdStyleType.wdStyleTypeCharacter
                      ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר").Priority = 3
                      ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר").QuickStyle = True
          
          End Sub
          
          Private Sub part4A()
          '
          'החלת סגנון מילה ראשונה כולל מסגרת
          '
              Selection.Find.ClearFormatting
              Selection.Find.Replacement.ClearFormatting
              Application.ScreenRefresh
              Selection.Find.Replacement.Style = ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר")
             
              With Selection.Find
                  .Text = "(^+^+^+^+)(*)(^+^+^+^+)"
                  .Replacement.Text = "\2"
                  .Forward = True
                  .Wrap = wdFindContinue
                  .Format = True
                  .MatchCase = False
                  .MatchWholeWord = False
                  .MatchKashida = False
                  .MatchDiacritics = False
                  .MatchAlefHamza = False
                  .MatchControl = False
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              Selection.Find.Execute Replace:=wdReplaceAll
          End Sub
          
          Private Sub part4B()
          '
          'החלת סגנון מילה ראשונה בלי מסגרת
          '
              Selection.Find.ClearFormatting
              Selection.Find.Replacement.ClearFormatting
              Application.ScreenRefresh
              Selection.Find.Replacement.Style = ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר")
             
              With Selection.Find
                  .Text = "(^+^+^+^+)(*)(^+^+^+^+)(^13)"
                  .Replacement.Text = "\2"
                  .Forward = True
                  .Wrap = wdFindContinue
                  .Format = True
                  .MatchCase = False
                  .MatchWholeWord = False
                  .MatchKashida = False
                  .MatchDiacritics = False
                  .MatchAlefHamza = False
                  .MatchControl = False
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              Selection.Find.Execute Replace:=wdReplaceAll
          
          End Sub
          
          Private Sub part4c()
          '
          'בפסקאות עם פחות מארבע שורות החלת סגנון מילה ראשונה לא כולל מסגרת
          '
          
              Selection.Find.ClearFormatting
              Selection.Find.Replacement.ClearFormatting
              Selection.Find.Replacement.Style = ActiveDocument.Styles( _
                  "מילת פתיח בלי חלון עיצוב מהיר")
              
              With Selection.Find
                  .Text = "(^13)($#$#$#)(* )"
                  .Replacement.Text = "\1\3"
                  .Forward = True
                  .Wrap = wdFindContinue
                  .Format = True
                  .MatchCase = False
                  .MatchWholeWord = False
                  .MatchKashida = False
                  .MatchDiacritics = False
                  .MatchAlefHamza = False
                  .MatchControl = False
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              Selection.Find.Execute Replace:=wdReplaceAll
          End Sub
              
              
          Private Sub part5()
          '
          'ניקוי הסימנים
          '
          
          Selection.Find.ClearFormatting
              Selection.Find.Replacement.ClearFormatting
              With Selection.Find
                  .Text = "$$$$$$$$$" & Chr(13)
                  .Replacement.Text = ""
                  .Forward = True
                  .Wrap = wdFindContinue
                  .Format = False
                  .MatchCase = False
                  .MatchWholeWord = False
                  .MatchKashida = False
                  .MatchDiacritics = False
                  .MatchAlefHamza = False
                  .MatchControl = False
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              
              Selection.Find.Execute Replace:=wdReplaceAll
              
              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
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              
              Selection.Find.Execute Replace:=wdReplaceAll
              
              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
                  .MatchAllWordForms = False
                  .MatchSoundsLike = False
                  .MatchWildcards = True
              End With
              
              Selection.Find.Execute Replace:=wdReplaceAll
              
              
          End Sub
          
          Sub part6()
          
          '
          'הסרת עיצוב מילה ראשונה בפסקאות שנבחרו
          'מאת pcinfogmach
          '
          
              ' Declare variables
              Dim para As Paragraph, paraText As String, numSpaces, i As Integer, _
              spacePos, startSel, endSel As Long, paraRange, slctd As Range, _
              myFrame As Frame, myRange As Range
              
              ' Get number of spaces
              numSpaces = 1
              Set slctd = Selection.Range
              slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
                   
              'תחילת הלולאה
              For Each para In slctd.Paragraphs
              
              ' Check if paragraph meets criteria
              If para.Range.Style Like "כותרת*" Then GoTo nxt
              If para.Range.Style Like "Heading*" Then GoTo nxt
              If Not para.Range.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then GoTo nxt
           
                      ' Get text of paragraph
                      paraText = para.Range.Text
                      
                      ' Find position of first space
                      spacePos = InStr(1, paraText, " ")
                      
                      ' Find position of selected space
                      For i = 2 To numSpaces
                          spacePos = InStr(spacePos + 1, paraText, " ")
                          If spacePos = 0 Then Exit For
                      Next i
                      
                      ' Select words
                      If Not spacePos > 0 Then GoTo nxt
                          startSel = para.Range.Start
                          endSel = startSel + spacePos
                          Selection.SetRange Start:=startSel, End:=endSel
          
          Selection.Move Unit:=wdCharacter, Count:=1
          Selection.End = Selection.End + 1
              Selection.CopyFormat
              
          Selection.SetRange Start:=startSel, End:=endSel
          Selection.PasteFormat
              Selection.Start = Selection.Start - 3
              
              For Each myFrame In Selection.Frames
              Set myRange = myFrame.Range
              myRange.Select
              Selection.PasteFormat
              myFrame.Delete
              myRange.Collapse wdCollapseEnd
              myRange.Delete wdCharacter, 1
              Next myFrame
              
          Application.ScreenRefresh
          nxt:
              Next para
          
          '
          ''מניעת שגיאות
          Application.ScreenRefresh
          
          End Sub
          
          
          
          
          ד תגובה 1 תגובה אחרונה
          2
          • P pcinfogmach

            קוד עיצוב פיסקה כנהוג בספרי קודש - מילה ראשונה, חלון, ומירכוז שורה אחרונה:
            קרדיט ל- @NykUser @מאקרו ו-@pcinfogmach

            מצו"ב שני שיטות:

            בשיטה הראשונה - עובד יותר חלק ומקצועי אבל כדי לערוך שינויים צריך להריץ שוב את המאקרו כדי לתקן את העיצוב.

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


            שיטה ראשונה:
            חלון.bas
            שורה_אחרונה.bas

            Sub עיצוב_מילה_ראשונה_לפי_סגנון()
            
               Dim myDialog As Dialog, para As Paragraph, rng As Range, styl As String
               
                styl = ActiveDocument.Styles(wdStyleStrong).NameLocal
                Set rng = Selection.Range
                Set myDialog = Dialogs(wdDialogFormatStyle)
                
                
                Selection.MoveUp Unit:=wdParagraph, Count:=1
                
                With myDialog
                    .Name = styl
                    .Display
                    End With
                          
               For Each para In rng.Paragraphs
                With para.Range
                .End = .Start
                .MoveEndUntil " ", wdForward
                .Select
                End With
                myDialog.Execute
                Next para
                
            End Sub
            
            Sub עיצוב_מילה_ראשונה_ללא_סגנון()
            
               Dim myDialog As Dialog, para As Paragraph, rng As Range
               
                Set rng = Selection.Range
                Set myDialog = Dialogs(wdDialogFormatFont)
                
                myDialog.Display
                       
               For Each para In rng.Paragraphs
                With para.Range
                .End = .Start
                .MoveEndUntil " ", wdForward
                .Select
                End With
                myDialog.Execute
                Next para
                
            End Sub
            
            Sub הסר_עיצוב_מילה_ראשונה()
            
               Dim para As Paragraph, rng, mrng As Range
                       
               Set rng = Selection.Range
               
               For Each para In rng.Paragraphs
                 
                With para.Range
                    .Collapse: .MoveUntil cset:=" ": .MoveEnd: .Collapse Direction:=wdCollapseEnd
                    .move Unit:=wdCharacter, Count:=1
                    .Select
                End With
                  
                Selection.CopyFormat
                Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
                Selection.PasteFormat
                Application.ScreenRefresh
                Next para
                
            End Sub
            

            שיטה שניה:

            Option Explicit
            '
            '
            '
            'עיצוב חלון על עיקרון מסגרת
            ' עיצוב מילה ראשונה על עיקרון של החלת סגנון
            ' עיצוב שורה אחרונה על עיקרון של שלמה מימות ממתמחים טופ
            '
            
            
            Private Sub עיצוב_מהיר_כל_העיצובים()
            
            'קביעת הטווח
            Dim slctd As Range
            Set slctd = Selection.Range
            slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
            
            slctd.Select
            
            'הוסף סימנים ומרכז שורה אחרונה
            Call part1(slctd)
            
            'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
                slctd.InsertBefore "$$$$$$$$$" & Chr(13)
            
            'הכנות בשביל עיצוב מילה ראשונה או חלון
            Call part2(slctd)
            'יצירת הסגנונות אם צריך
            Call part3A
            Call part3B
            'החלת סגנון חלון
            Call part4A
            'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
            Call part4c
            'ניקוי שאריות
            Call part5
            'msgbox תיקון הסטייה
            
            End Sub
            Private Sub עיצוב_מהיר_שורה_אחרונה_ומילה_ראשונה_בלי_חלון()
            
            'קביעת הטווח
            Dim slctd As Range
            Set slctd = Selection.Range
            slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
            
            'הוסף סימנים ומרכז שורה אחרונה
            Call part1(slctd)
            
            'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
                slctd.InsertBefore "$$$$$$$$$" & Chr(13)
            
            'הכנות בשביל עיצוב מילה ראשונה או חלון
            Call part2(slctd)
            
            'יצירת הסגנונות אם צריך
            Call part3B
            
            'החלת סגנון מילה ראשונה
            Call part4B
            
            'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
            Call part4c
            
            'ניקוי שאריות
            Call part5
            
            End Sub
            
            Private Sub עיצוב_מהיר_הסר_את_כל_העיצובים()
            
            Call part6
            Call הסר_מרכוז_שורה_אחרונה
            
            End Sub
            
            Private Sub עיצוב_מהיר_מילה_ראשונה_עם_חלון()
            
            'קביעת הטווח
            Dim slctd As Range
            Set slctd = Selection.Range
            slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
            
            'הוסף סימנים
            Call part1B(slctd)
            
            'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
                slctd.InsertBefore "$$$$$$$$$" & Chr(13)
            
            
            'הכנות בשביל עיצוב מילה ראשונה או חלון
            Call part2(slctd)
            'יצירת הסגנונות אם צריך
            Call part3A
            Call part3B
            'החלת סגנון חלון
            Call part4A
            'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
            Call part4c
            'ניקוי שאריות
            Call part5
            
            
            
            
            End Sub
            Private Sub עיצוב_מהיר_מילה_ראשונה_בלי_חלון()
            
            'קביעת הטווח
            Dim slctd As Range
            Set slctd = Selection.Range
            slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
            
            'הוסף סימנים
            Call part1B(slctd)
            
            'הוסף מעבר שורה עם סימנים לפני פיסקה ראשונה
                slctd.InsertBefore "$$$$$$$$$" & Chr(13)
            
            'הכנות בשביל עיצוב מילה ראשונה או חלון
            Call part2(slctd)
            
            'יצירת הסגנונות אם צריך
            Call part3B
            
            'החלת סגנון מילה ראשונה
            Call part4B
            
            'החלת סגנון בלי חלון עבור פסקאות עם פחות מארבע שורות
            Call part4c
            
            'ניקוי שאריות
            Call part5
            
            End Sub
            
            Private Sub עיצוב_מהיר_מרכוז_שורה_אחרונה()
            
            'קביעת הטווח
            Dim slctd As Range
            Set slctd = Selection.Range
            slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
            
            'הוסף סימנים ומרכז שורה אחרונה
            Call part1(slctd)
            
            Call part5
            End Sub
            Private Sub הסר_מילה_ראשונה_וחלון()
            
            Call part6
            
            End Sub
            Private Sub הסר_מרכוז_שורה_אחרונה()
            
            'קביעת הטווח
            Dim slctd As Range
            Set slctd = Selection.Range
            slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
            
            'הוסף סימנים בפיסקאות שנבחרו
            slctd.Find.Execute _
            FindText:="(*)(^t)(^13)", _
            ReplaceWith:="\1+++++++\3", _
            Forward:=True, Wrap:=wdFindStop, MatchWildcards:=True, _
            Replace:=wdReplaceAll
            
            'חפש והחלף לפי סימנים
            Selection.Find.ClearFormatting
            Selection.Find.Replacement.ClearFormatting
                
                With Selection.Find.Replacement.ParagraphFormat
                    .SpaceBeforeAuto = False
                    .SpaceAfterAuto = False
                    .Alignment = wdAlignParagraphJustify
                End With
                With Selection.Find
                    .Text = "(*)(+++++++)(^13)"
                    .Replacement.Text = "\1\3"
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = True
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchKashida = False
                    .MatchDiacritics = False
                    .MatchAlefHamza = False
                    .MatchControl = False
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
                
            End Sub
            
            Sub part1(slctd As Range) ' Do something with slctd here
            '
            'מרכוז שורה אחרונה
            '
            
                'שינוי הטאבים ל- 0
                Selection.ParagraphFormat.TabStops.ClearAll
                ActiveDocument.DefaultTabStop = CentimetersToPoints(0)
                
            'החלת עיצוב שורה אחרונה
                Dim p As Paragraph
                For Each p In slctd.Paragraphs
                    ' Check if paragraph contains more than one line
                    If Not p.Range.ComputeStatistics(wdStatisticLines) > 1 Then
                            p.Range.InsertBefore "$#$#$#"
                                GoTo nxt
                            End If
                            
                            p.Range.ParagraphFormat.Alignment = wdAlignParagraphDistribute
                                    p.Range.Characters.Last.Previous = vbTab
                           
                    If Not p.Range.ComputeStatistics(wdStatisticLines) > 2 _
                    Or Not p.Range.ComputeStatistics(wdStatisticLines) > 3 Then
                        p.Range.InsertBefore "$#$#$#"
                        End If
            nxt:
                        Next p
            End Sub
            Sub part1B(slctd As Range) ' Do something with slctd here
            '
            'מרכוז שורה אחרונה
            '
            
                'שינוי הטאבים ל- 0
                Selection.ParagraphFormat.TabStops.ClearAll
                ActiveDocument.DefaultTabStop = CentimetersToPoints(0)
                
            'החלת עיצוב שורה אחרונה
                Dim p As Paragraph
                For Each p In slctd.Paragraphs
                    ' Check if paragraph contains more than one line
                    If Not p.Range.ComputeStatistics(wdStatisticLines) > 1 _
                    Or Not p.Range.ComputeStatistics(wdStatisticLines) > 2 _
                    Or Not p.Range.ComputeStatistics(wdStatisticLines) > 3 Then
                            p.Range.InsertBefore "$#$#$#"
                                
            End If
                        Next p
            End Sub
                        
            Private Sub part2(slctd As Range)
            '
            'הכנות בשביל עיצוב מילה ראשונה או חלון
            '
            
            'להוסיף פתרון בעיות עם סימני הערות שוליים צריך
                    
            'החלת סימן החרגה עבור פיסקאות מודגשות (כותרות)
            Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
            
            Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
                With Selection.Find
                    .Text = "*^13"
                    .Replacement.Text = "$$$$$$$$$^&"
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = True
                    .Font.BoldBi = True
                    .Font.Bold = True
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchKashida = False
                    .MatchDiacritics = False
                    .MatchAlefHamza = False
                    .MatchControl = False
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                
                Selection.Find.Execute Replace:=wdReplaceAll
                
            'סימון המילה הראושנה והפרדתו מהפיסקה שאחריו (כדי שהסגנון יחול רק עליו ולא על כל הפיסקה
            'אין אפשרות שיחול רק עליו בלי זה כי צריך להחיל עליו מסגרת
            'אין בעיה במה שהואנפרד כי המסגרת מוגדרת לקבץ אותו יחד עם הפיסקה שאחריו
                
                slctd.Find.Execute FindText:="(^13)([!$]@ )", ReplaceWith:="\1^+^+^+^+\2^+^+^+^+^p", Forward:=True, Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
            
            End Sub
            
            Private Sub part3A()
            Dim styl As Style
            
            '
            'יצירת סגנון מילה ראשונה עם חלון
            '
            
                    'הוזזת הסמן לתחילת הטווח כדי למנוע עיצוב המילים המסומנות
                    Selection.Collapse Direction:=wdCollapseStart
            
            'בדיקה אם הסגנון כבר קיים
                    On Error Resume Next
                    Set styl = ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר")
                    On Error GoTo 0
            
            'הודעה למשתמש
            If Not styl Is Nothing Then Exit Sub
            Dim strt As VbMsgBoxResult
            strt = MsgBox("לפני שנחתחיל תצטרכו לבחור עיצוב נפרד עבור סגנון 'מילת פתיח עם חלון עיצוב מהיר'." & vbNewLine & "לאחר יצירת הסגנון תמיד תוכלו לשנותו על ידי לחיצה ימנית על הסגנון בסרגל הסגנונות." & vbNewLine & "כך או כך הלחצן יחיל את הסגנון המבוקש על המילה הראשונה שבכל פיסקה.", _
            vbInformation + vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "יצירת והחלת סגנון 'מילה ראשונה בהערות שוליים'")
            If strt = vbCancel Then Exit Sub
            
                    'בחירת העיצוב
                    Selection.Font.Name = Selection.Font.Name
                        With Dialogs(wdDialogFormatFont)
                            .Update
                            .Font = Selection.Font.Name
                            .FontNameBi = Selection.Font.Name
                            If .Show = False Then Exit Sub
                        End With
                        
                        'יצירת הסגנון
                        ActiveDocument.Styles.Add Name:="מילת פתיח עם חלון עיצוב מהיר", Type:=WdStyleType.wdStyleTypeParagraph
                        ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").Priority = 3
                        ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").QuickStyle = True
                        
                    
                        'הגדרת הסגנון כסגנון עם מסגרת
                        With ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").ParagraphFormat
                            .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
                            .Borders(wdBorderRight).LineStyle = wdLineStyleNone
                            .Borders(wdBorderTop).LineStyle = wdLineStyleNone
                            .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
                                    With .Borders
                                        .DistanceFromTop = 1
                                        .DistanceFromLeft = 4
                                        .DistanceFromBottom = 1
                                        .DistanceFromRight = 4
                                        .Shadow = False
                                    End With
                        End With
                        
                        'הגדרות המסגרת
                        With ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר").Frame
                            .TextWrap = True
                            .WidthRule = wdFrameAuto
                            .HeightRule = wdFrameAuto
                            .HorizontalPosition = wdFrameRight
                            .RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
                            .RelativeVerticalPosition = wdRelativeVerticalPositionParagraph
                            .HorizontalDistanceFromText = CentimetersToPoints(0.13)
                            .VerticalDistanceFromText = CentimetersToPoints(0)
                            .LockAnchor = False
                        End With
            
            End Sub
            
            Private Sub part3B()
            Dim styl As Style
            '
            'יצירת סגנון מילה ראשונה בלי חלון
            '
            
                    'הוזזת הסמן לתחילת הטווח כדי למנוע עיצוב המילים המסומנות
                    Selection.Collapse Direction:=wdCollapseStart
            
            'בדיקה אם הסגנון כבר קיים
                    On Error Resume Next
                    Set styl = ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר")
                    On Error GoTo 0
                
            'הודעה למשתמש
            If Not styl Is Nothing Then Exit Sub
            Dim strt As VbMsgBoxResult
            strt = MsgBox("לפני שנחתחיל תצטרכו לבחור עיצוב נפרד עבור סגנון 'מילת פתיח בלי חלון עיצוב מהיר'." & vbNewLine & "לאחר יצירת הסגנון תמיד תוכלו לשנותו על ידי לחיצה ימנית על הסגנון בסרגל הסגנונות." & vbNewLine & "כך או כך הלחצן יחיל את הסגנון המבוקש על המילה הראשונה שבכל פיסקה.", _
            vbInformation + vbOKCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "יצירת והחלת סגנון 'מילה ראשונה בהערות שוליים'")
            If strt = vbCancel Then Exit Sub
            
                    'בחירת העיצוב
                    Selection.Font.Name = Selection.Font.Name
                        With Dialogs(wdDialogFormatFont)
                            .Update
                            .Font = Selection.Font.Name
                            .FontNameBi = Selection.Font.Name
                            If .Show = False Then Exit Sub
                        End With
                        
                        'יצירת הסגנון
                        ActiveDocument.Styles.Add Name:="מילת פתיח בלי חלון עיצוב מהיר", Type:=WdStyleType.wdStyleTypeCharacter
                        ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר").Priority = 3
                        ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר").QuickStyle = True
            
            End Sub
            
            Private Sub part4A()
            '
            'החלת סגנון מילה ראשונה כולל מסגרת
            '
                Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
                Application.ScreenRefresh
                Selection.Find.Replacement.Style = ActiveDocument.Styles("מילת פתיח עם חלון עיצוב מהיר")
               
                With Selection.Find
                    .Text = "(^+^+^+^+)(*)(^+^+^+^+)"
                    .Replacement.Text = "\2"
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = True
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchKashida = False
                    .MatchDiacritics = False
                    .MatchAlefHamza = False
                    .MatchControl = False
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
            End Sub
            
            Private Sub part4B()
            '
            'החלת סגנון מילה ראשונה בלי מסגרת
            '
                Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
                Application.ScreenRefresh
                Selection.Find.Replacement.Style = ActiveDocument.Styles("מילת פתיח בלי חלון עיצוב מהיר")
               
                With Selection.Find
                    .Text = "(^+^+^+^+)(*)(^+^+^+^+)(^13)"
                    .Replacement.Text = "\2"
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = True
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchKashida = False
                    .MatchDiacritics = False
                    .MatchAlefHamza = False
                    .MatchControl = False
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
            
            End Sub
            
            Private Sub part4c()
            '
            'בפסקאות עם פחות מארבע שורות החלת סגנון מילה ראשונה לא כולל מסגרת
            '
            
                Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
                Selection.Find.Replacement.Style = ActiveDocument.Styles( _
                    "מילת פתיח בלי חלון עיצוב מהיר")
                
                With Selection.Find
                    .Text = "(^13)($#$#$#)(* )"
                    .Replacement.Text = "\1\3"
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = True
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchKashida = False
                    .MatchDiacritics = False
                    .MatchAlefHamza = False
                    .MatchControl = False
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
            End Sub
                
                
            Private Sub part5()
            '
            'ניקוי הסימנים
            '
            
            Selection.Find.ClearFormatting
                Selection.Find.Replacement.ClearFormatting
                With Selection.Find
                    .Text = "$$$$$$$$$" & Chr(13)
                    .Replacement.Text = ""
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = False
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchKashida = False
                    .MatchDiacritics = False
                    .MatchAlefHamza = False
                    .MatchControl = False
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                
                Selection.Find.Execute Replace:=wdReplaceAll
                
                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
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                
                Selection.Find.Execute Replace:=wdReplaceAll
                
                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
                    .MatchAllWordForms = False
                    .MatchSoundsLike = False
                    .MatchWildcards = True
                End With
                
                Selection.Find.Execute Replace:=wdReplaceAll
                
                
            End Sub
            
            Sub part6()
            
            '
            'הסרת עיצוב מילה ראשונה בפסקאות שנבחרו
            'מאת pcinfogmach
            '
            
                ' Declare variables
                Dim para As Paragraph, paraText As String, numSpaces, i As Integer, _
                spacePos, startSel, endSel As Long, paraRange, slctd As Range, _
                myFrame As Frame, myRange As Range
                
                ' Get number of spaces
                numSpaces = 1
                Set slctd = Selection.Range
                slctd.SetRange Selection.Paragraphs.First.Range.Start, Selection.Paragraphs.Last.Range.End
                     
                'תחילת הלולאה
                For Each para In slctd.Paragraphs
                
                ' Check if paragraph meets criteria
                If para.Range.Style Like "כותרת*" Then GoTo nxt
                If para.Range.Style Like "Heading*" Then GoTo nxt
                If Not para.Range.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then GoTo nxt
             
                        ' Get text of paragraph
                        paraText = para.Range.Text
                        
                        ' Find position of first space
                        spacePos = InStr(1, paraText, " ")
                        
                        ' Find position of selected space
                        For i = 2 To numSpaces
                            spacePos = InStr(spacePos + 1, paraText, " ")
                            If spacePos = 0 Then Exit For
                        Next i
                        
                        ' Select words
                        If Not spacePos > 0 Then GoTo nxt
                            startSel = para.Range.Start
                            endSel = startSel + spacePos
                            Selection.SetRange Start:=startSel, End:=endSel
            
            Selection.Move Unit:=wdCharacter, Count:=1
            Selection.End = Selection.End + 1
                Selection.CopyFormat
                
            Selection.SetRange Start:=startSel, End:=endSel
            Selection.PasteFormat
                Selection.Start = Selection.Start - 3
                
                For Each myFrame In Selection.Frames
                Set myRange = myFrame.Range
                myRange.Select
                Selection.PasteFormat
                myFrame.Delete
                myRange.Collapse wdCollapseEnd
                myRange.Delete wdCharacter, 1
                Next myFrame
                
            Application.ScreenRefresh
            nxt:
                Next para
            
            '
            ''מניעת שגיאות
            Application.ScreenRefresh
            
            End Sub
            
            
            
            
            ד מנותק
            ד מנותק
            דאנציג
            כתב ב נערך לאחרונה על ידי
            #14

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

            Sub הגדלה_בחצי_נקודה()
                Selection.Font.SizeBi = Selection.Font.SizeBi + 0.5
            End Sub
            Sub הקטנה_בחצי_נקודה()
                Selection.Font.SizeBi = Selection.Font.SizeBi - 0.5
            End Sub
            
            
            מ תגובה 1 תגובה אחרונה
            1
            • P pcinfogmach

              אינצקלופדיה שיתופית למאקרו (VBA)

              פוסט זה נועד כדי לשתף קטעי קוד מוצלחים עבור פונקציות שונות במאקרו (VBA) עבור תוכנת מיקרוסופט וורד.
              הציבור מוזמן לשתף 🙂
              נ.ב. אינני מתכנן לענות על שאלות רק להעלות קטעי קוד שימושיים

              1. קוד לסימון המילה הראשונה בפיסקה בכל המסמך
              2. קוד להוספת צורה במיקום הנוכחי של הסמן במסמך
              3. איך לעשות פעולות נסתרות מעיני המשתמש - ולהגביר את מהירות הקוד
              4. קוד להתקנת תבנית בתוך תיקיית ההתחלה של וורד
              5. קוד ליצירת לולאה - עד מילוי תנאי מסויים
              6. קוד להוספת סגנון והסרתו
              7. לולאה שחוזרת על עצמה מספר פעמים קצוב
              8. טיפול בשגיאות
              9. אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש).
              10. איך לשנות את תחום הטקסט המסומן

              11.קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט
              12. קוד עיצוב פיסקה כנהוג בספרי קודש, חלון, מילה ראשונה, ומרכוז שורה אחרונה
              13. הגדלה והקטנה בחצי נקודה על טקסט נבחר
              14. כותרות צד
              15.כמה מוסכמויות בכתיבת קוד:
              16. מה עושים כאשר הטקסט בתוך userform לא מופיע
              17.חיפוש והחלפה במסמכים מרובים
              18. פתיחת מסמכים מרובים
              19. הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.
              20.הערות ברצף ו - הסרת הערות ברצף
              21. הקטנת והגדלת סוגריים
              22. איך ליצור userform - מדריך
              23.הגדל רווחים בין מילים
              23.הסרת כל הרווחים בטקסט שסומן
              24. איך ליצור range נפרד עבור כל טור בהערות שוליים
              25. שינוי מרווח בין טורים רק בהערות שוליים
              26. קוד חמוד להעתקת כל המודולים מתבנית אחת לשניה
              עריכה נוכחית:
              27. קוד לשינוי שפת המקלדת לעברית
              28. קוד לייצוא שמות הקבצים מתוך תיקייה

              מושגי יסוד בVBA

              נא לא לשאול שאלות

              1. אני לא הולך להסביר פה איך ליצור מודול ולפתוח את הvba לזה תעשו שיעורי בית לבד.

              2. כל קוד חייב להיות בתוך sub עם שם

              3. בניית מאקרו הוא בעצם במו בניית פאזל, לפאזל הזה יש שלושה סוגי חלקים: אובייקטים הגדרות ופעולות.
                אובייקטים הם חלקי המסמך כגון פיסקאות וכו'. הגדרות הם הגדרות הפיסקה או הגופן וכו'. ופעולות הם פעולות שנעשה עם האובייקט כגון להעתיק אותו.
                דוגמא: selection.delete זוהי פעולה מחיקה על הטקסט המסומן
                "Selection.font.Name = "Arial זוהי פעולה שמגדירה את שם הפונט של הטקסט המסומן ל- Arial
                פעולות באות אחרי נקודה. מאפיינים באים אחרי =

              4. הגדרת משתנים כמה כללים טובים:
                שם המשתנה חייב להתחיל באות
                אין להוסיף רווחים לשם המשתנה
                אין לתת למשתנה שם זהה לשם המאקרו
                אין לתת למשתנים שמות שמורים כגון Save
                מומלץ לתת שם המתאר באופן מדויק את משמעות המשתנה

              5. משתנה מוגדר על ידי Dim "שם המשתנה" As "סוג המשתנה"
                לדוגמא Dim MyString As String משתנה בשם MyString שהוגדר כמחרוזת טקסט

              6. סוגי משתנים
                Integer - מאפשר לאחסן בתוכו מספרים שלמים
                long - כמו integer רק עבור מספרים גדולים מ32,000
                Double - מאפשר לאחסן בתוכו מספרים עשרוניים
                String - מאפשר לאחסן בתוכו מחרוזת טקסט
                Range - מאפשר לאחסן בתוכו טווחים
                כמו"כ כל אובייקט במסמך יכול להיות משתנה ג"כ

              7. אחרי Dim - הכרזה של המשתנה יש לתת לו ערך
                לדוגמא
                Dim Mystring As String
                "Mystring = "abc
                הערה הזנה של טקסט צמיד תהיה בתוך מירכאות משא"כ במספרים.
                בקביעת משתני טווח יש להוסיף את המילה set
                לדוגמא
                Dim myrange As Range
                Set myrange = Selection.range
                המשתנה של הטווח הוגדר כטווח הטקסט המסומן

              P מנותק
              P מנותק
              pcinfogmach
              מדריכים
              כתב ב נערך לאחרונה על ידי
              #15

              קוד להוספת כותרות צד

              Option Explicit
              Sub כותרות_צד()
              
              
              Dim numColumns As Integer, currentPara As Paragraph, slctd As Range _
                      
              'set range
              Set slctd = Selection.Range
              
              'start loop
              For Each currentPara In slctd.Paragraphs
              Application.ScreenUpdating = False
              currentPara.Range.Select
              
              'get column width
                  numColumns = ActiveDocument.PageSetup.TextColumns.Count
                  If numColumns = 2 Then
                      Dim columnWidth As Single
                      Dim columnWidth2 As Single
                      columnWidth = ActiveDocument.PageSetup.TextColumns.Item(1).Width
                      columnWidth2 = ActiveDocument.PageSetup.TextColumns.Item(2).Width
                  End If
                  
              'exceptions
              If Not currentPara.Range.ComputeStatistics(wdStatisticLines) > 1 _
              Or Not currentPara.Range.ComputeStatistics(wdStatisticLines) > 2 Then GoTo nxt
              
              'Get the first sentence of the current paragraph
                  Dim firstSentence As String
                  Dim words() As String
                  words = Split(currentPara.Range.Text, " ")
                  firstSentence = words(0) & " " & words(1) & " " & words(2) & " " _
                  & words(3) & " " & words(4) & " " & words(5)
                  
              'get font size set box font size and calc misalignment adjustment accordingly
                  Dim fontSize, x, y, z As Single
                  fontSize = currentPara.Range.Font.SizeBi - 4
                  x = currentPara.Range.Font.SizeBi
                  y = x - 8
                  z = y * 0.4
                  'MsgBox z
              
              '
              'Dim spaceWidth As Double
              'spaceWidth = currentPara.Range.font.spacing
              'Dim spaceWidth As Double
              'spaceWidth = ActiveDocument.PageSetup.TextColumns.spacing / 2
              '
                  
                  'get middle of page
                  Dim mrgn As Double
                  mrgn = ActiveDocument.PageSetup.LeftMargin / 2
              
                  Dim newShape As Shape
                  'left column - if para calc is smaller then middle of page
                  If ActiveDocument.PageSetup.PageWidth / 2 > currentPara.Range.Information(wdHorizontalPositionRelativeToPage) Then
                  Set newShape = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
                          Left:=currentPara.Range.Information(wdHorizontalPositionRelativeToPage) - columnWidth2 - mrgn, _
                          Top:=currentPara.Range.Information(wdVerticalPositionRelativeToPage), _
                          Width:=mrgn, Height:=50)
                      newShape.TextFrame.TextRange.ParagraphFormat.Alignment = wdAlignParagraphRight
                      End If
                      
                  'right column - if para calc is larger
                  If ActiveDocument.PageSetup.PageWidth / 2 < currentPara.Range.Information(wdHorizontalPositionRelativeToPage) Then
                      Set newShape = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
                          Left:=currentPara.Range.Information(wdHorizontalPositionRelativeToPage), _
                          Top:=currentPara.Range.Information(wdVerticalPositionRelativeToPage), _
                          Width:=mrgn, Height:=50)
                  newShape.TextFrame.TextRange.ParagraphFormat.Alignment = wdAlignParagraphLeft
                 
                  End If
                     'newShape.TextFrame.MarginLeft = 0
                     'newShape.TextFrame.MarginRight = 0
                      newShape.TextFrame.MarginTop = z 'adjust misalignment
                      newShape.TextFrame.MarginBottom = 0
                      newShape.Line.Visible = msoFalse
                      newShape.TextFrame.TextRange.Text = firstSentence
                      newShape.TextFrame.TextRange.Font.SizeBi = 8
                      newShape.TextFrame.AutoSize = True
                      
              
                  'tiny adjustment
                      If ActiveDocument.PageSetup.PageWidth / 2 > currentPara.Range.Information(wdHorizontalPositionRelativeToPage) Then
                      newShape.TextFrame.MarginTop = newShape.TextFrame.MarginTop - 0.1
                      Else
                      newShape.TextFrame.MarginTop = newShape.TextFrame.MarginTop - 0.05
                      newShape.TextFrame.MarginLeft = newShape.TextFrame.MarginLeft + 0.04
                      End If
                      
              nxt:
              Application.ScreenUpdating = True
              Application.ScreenRefresh
                  Next currentPara
                  
                  End Sub
                  
              Sub מחק_כותרת_צד_בכל_המסמך()
                  Dim shp As Shape, i As Integer, shppos, mrgnright, mrgnleft As Single
                      
                      mrgnleft = ActiveDocument.PageSetup.LeftMargin
                      mrgnright = ActiveDocument.PageSetup.PageWidth - mrgnleft
                  
                  For i = ActiveDocument.Shapes.Count To 1 Step -1
                      Set shp = ActiveDocument.Shapes(i)
                      shppos = shp.TextFrame.TextRange.Information(wdHorizontalPositionRelativeToPage)
                      
                      If shppos > mrgnright Or shppos < mrgnleft _
                      And shp.Type = msoTextBox And shp.Line.Visible = msoFalse Then
                       'And shp.Width = ActiveDocument.PageSetup.LeftMargin / 2 Then
                          shp.Delete
                      End If
                  
                  Next i
                  End Sub
              
              Sub מחק_כותרות_צד_בעמוד_זה()
              Dim shp As Shape, i, currentPage As Integer, _
              shppos, mrgnright, mrgnleft As Single
                  
                  mrgnleft = ActiveDocument.PageSetup.LeftMargin
                  mrgnright = ActiveDocument.PageSetup.PageWidth - mrgnleft
                  
                  currentPage = Selection.Information(wdActiveEndPageNumber)
                  Application.ScreenUpdating = False
                  For Each shp In ActiveDocument.Shapes
                      shppos = shp.TextFrame.TextRange.Information(wdHorizontalPositionRelativeToPage)
                      If shp.Anchor.Information(wdActiveEndPageNumber) = currentPage And _
                      shppos > mrgnright Or shppos < mrgnleft _
                      And shp.Type = msoTextBox And shp.Line.Visible = msoFalse _
                      And shp.Anchor.Information(wdActiveEndPageNumber) = currentPage Then
                          shp.Select (False)
                      End If
                  Next shp
                  Application.ScreenUpdating = True
                  Selection.Delete Unit:=wdCharacter, Count:=1
              End Sub
              
              
              
              
              
              
              
              menajemmendelM תגובה 1 תגובה אחרונה
              1
              • ד דאנציג

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

                Sub הגדלה_בחצי_נקודה()
                    Selection.Font.SizeBi = Selection.Font.SizeBi + 0.5
                End Sub
                Sub הקטנה_בחצי_נקודה()
                    Selection.Font.SizeBi = Selection.Font.SizeBi - 0.5
                End Sub
                
                
                מ מנותק
                מ מנותק
                מאקרו
                כתב ב נערך לאחרונה על ידי
                #16

                @דאנציג כתב בשיתוף | אינצקלופדיה שיתופית עבור קודים של מאקרו - איך עושים את....:

                וכאן המקום לבקש מי שיודע כיצד ניתן שהפונקציה תעבוד גם על מספר גדלים תע"ב אם ישתף את הציבור.

                שתי אפשרויות:
                א. לעשות לולאה שעוברת על כל התווים, המעלה שהכל יהיה במידה מדוייקת, החסרון שהפעולה תהיה מאד איטית בטקסט ארוך.
                ב. להגדיר את הכל לפי התו הראשון בבחירה, המעלה שפועל בצורה מהירה, החסרון שההגדלה לא תהיה מדוייקת וזה רק נותן פתרון שלא יחזיר שגיאה.
                אפשר לעשות ג"כ בדיקה האם מחזיר שגיאה ואז שיעבוד בלולאה...

                תגובה 1 תגובה אחרונה
                1
                • P pcinfogmach

                  אינצקלופדיה שיתופית למאקרו (VBA)

                  פוסט זה נועד כדי לשתף קטעי קוד מוצלחים עבור פונקציות שונות במאקרו (VBA) עבור תוכנת מיקרוסופט וורד.
                  הציבור מוזמן לשתף 🙂
                  נ.ב. אינני מתכנן לענות על שאלות רק להעלות קטעי קוד שימושיים

                  1. קוד לסימון המילה הראשונה בפיסקה בכל המסמך
                  2. קוד להוספת צורה במיקום הנוכחי של הסמן במסמך
                  3. איך לעשות פעולות נסתרות מעיני המשתמש - ולהגביר את מהירות הקוד
                  4. קוד להתקנת תבנית בתוך תיקיית ההתחלה של וורד
                  5. קוד ליצירת לולאה - עד מילוי תנאי מסויים
                  6. קוד להוספת סגנון והסרתו
                  7. לולאה שחוזרת על עצמה מספר פעמים קצוב
                  8. טיפול בשגיאות
                  9. אינטראקציה עם המשתמש בצורה יעילה - כן, לא, או ביטול. (יצירת תנאים לפי בחירת המשתמש).
                  10. איך לשנות את תחום הטקסט המסומן

                  11.קוד לפתיחת מסמך קובץ תיקייה או אתר אינטרנט
                  12. קוד עיצוב פיסקה כנהוג בספרי קודש, חלון, מילה ראשונה, ומרכוז שורה אחרונה
                  13. הגדלה והקטנה בחצי נקודה על טקסט נבחר
                  14. כותרות צד
                  15.כמה מוסכמויות בכתיבת קוד:
                  16. מה עושים כאשר הטקסט בתוך userform לא מופיע
                  17.חיפוש והחלפה במסמכים מרובים
                  18. פתיחת מסמכים מרובים
                  19. הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.
                  20.הערות ברצף ו - הסרת הערות ברצף
                  21. הקטנת והגדלת סוגריים
                  22. איך ליצור userform - מדריך
                  23.הגדל רווחים בין מילים
                  23.הסרת כל הרווחים בטקסט שסומן
                  24. איך ליצור range נפרד עבור כל טור בהערות שוליים
                  25. שינוי מרווח בין טורים רק בהערות שוליים
                  26. קוד חמוד להעתקת כל המודולים מתבנית אחת לשניה
                  עריכה נוכחית:
                  27. קוד לשינוי שפת המקלדת לעברית
                  28. קוד לייצוא שמות הקבצים מתוך תיקייה

                  מושגי יסוד בVBA

                  נא לא לשאול שאלות

                  1. אני לא הולך להסביר פה איך ליצור מודול ולפתוח את הvba לזה תעשו שיעורי בית לבד.

                  2. כל קוד חייב להיות בתוך sub עם שם

                  3. בניית מאקרו הוא בעצם במו בניית פאזל, לפאזל הזה יש שלושה סוגי חלקים: אובייקטים הגדרות ופעולות.
                    אובייקטים הם חלקי המסמך כגון פיסקאות וכו'. הגדרות הם הגדרות הפיסקה או הגופן וכו'. ופעולות הם פעולות שנעשה עם האובייקט כגון להעתיק אותו.
                    דוגמא: selection.delete זוהי פעולה מחיקה על הטקסט המסומן
                    "Selection.font.Name = "Arial זוהי פעולה שמגדירה את שם הפונט של הטקסט המסומן ל- Arial
                    פעולות באות אחרי נקודה. מאפיינים באים אחרי =

                  4. הגדרת משתנים כמה כללים טובים:
                    שם המשתנה חייב להתחיל באות
                    אין להוסיף רווחים לשם המשתנה
                    אין לתת למשתנה שם זהה לשם המאקרו
                    אין לתת למשתנים שמות שמורים כגון Save
                    מומלץ לתת שם המתאר באופן מדויק את משמעות המשתנה

                  5. משתנה מוגדר על ידי Dim "שם המשתנה" As "סוג המשתנה"
                    לדוגמא Dim MyString As String משתנה בשם MyString שהוגדר כמחרוזת טקסט

                  6. סוגי משתנים
                    Integer - מאפשר לאחסן בתוכו מספרים שלמים
                    long - כמו integer רק עבור מספרים גדולים מ32,000
                    Double - מאפשר לאחסן בתוכו מספרים עשרוניים
                    String - מאפשר לאחסן בתוכו מחרוזת טקסט
                    Range - מאפשר לאחסן בתוכו טווחים
                    כמו"כ כל אובייקט במסמך יכול להיות משתנה ג"כ

                  7. אחרי Dim - הכרזה של המשתנה יש לתת לו ערך
                    לדוגמא
                    Dim Mystring As String
                    "Mystring = "abc
                    הערה הזנה של טקסט צמיד תהיה בתוך מירכאות משא"כ במספרים.
                    בקביעת משתני טווח יש להוסיף את המילה set
                    לדוגמא
                    Dim myrange As Range
                    Set myrange = Selection.range
                    המשתנה של הטווח הוגדר כטווח הטקסט המסומן

                  P מנותק
                  P מנותק
                  pcinfogmach
                  מדריכים
                  כתב ב נערך לאחרונה על ידי
                  #17

                  @OdedDvir כתב באקסס למתחילים: יצירת מערכת לניהול תורמים:
                  כמה מוסכמויות בכתיבת קוד:

                  עבור שמות פונקציות יש להשתמש ב upper camel case, או בתרגום חופשי: כתיבת גמל (?) או כתיבה גמלונית(?) 🤦 , דהיינו להתחיל כל מילה בשם הפונקציה באות גדולה, למשל:
                  ()GetUserName
                  או
                  ()CleanMyDesk

                  עבור שמות משתנים או שמות פרמטרים (לפונקציה) על ידי lower camel case דהיינו להתחיל כל מילה באות גדולה, למעט המילה הראשונה בשם המשתנה, שמתחילה באות קטנה, למשל:
                  donationsToUpdate
                  או
                  MakeMeSomeCoffee(addSugar As Boolean, numberOfCups As Long)

                  למרות ש-VBA לא תמיד שומרת על מוסכמויות אלו בעצמה (נו נו נו VBA...), כדאי להתרגל בהן כבר מתחילת הדרך. הדבר ישתלם בהמשך, כשנלמד עוד מוסכמויות או נרצה לעבור לשפה אחרת.

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

                    לפעמים כאשר משתמשים בuserform בתצורה של modeless הטקסט שבתוך ה userform לא נראה בהרצה במקרה כזה יש לקרוא לuserform כך:
                    Userform1.Show
                    Userform1.Repaint

                    1 תגובה 1 תגובה אחרונה
                    0
                    • P pcinfogmach

                      לפעמים כאשר משתמשים בuserform בתצורה של modeless הטקסט שבתוך ה userform לא נראה בהרצה במקרה כזה יש לקרוא לuserform כך:
                      Userform1.Show
                      Userform1.Repaint

                      1 מנותק
                      1 מנותק
                      121244
                      כתב ב נערך לאחרונה על ידי
                      #19
                      פוסט זה נמחק!
                      P תגובה 1 תגובה אחרונה
                      0
                      • 1 121244

                        פוסט זה נמחק!

                        P מנותק
                        P מנותק
                        pcinfogmach
                        מדריכים
                        כתב ב נערך לאחרונה על ידי
                        #20
                        פוסט זה נמחק!
                        תגובה 1 תגובה אחרונה
                        0
                        • P מנותק
                          P מנותק
                          pcinfogmach
                          מדריכים
                          כתב ב נערך לאחרונה על ידי pcinfogmach
                          #21

                          חיפוש והחלפה במסמכים מרובים לפי תיקיות

                          Sub SearchReplaceAllDocumentsInFolder()
                              Dim FolderPath As String
                              Dim FileName As String
                              Dim DocumentPath As String
                              Dim doc As Document
                              Dim Counter As Long
                                  
                              ' Select the folder containing the documents
                              With Application.FileDialog(msoFileDialogFolderPicker)
                                  .Title = "Select Folder"
                                  If .Show = -1 Then
                                      FolderPath = .SelectedItems(1) & "\"
                                  Else
                                      Exit Sub
                                  End If
                              End With
                              
                              ' Disable screen updating for faster execution
                              Application.ScreenUpdating = False
                              
                              ' Initialize counters
                              Counter = 0
                              
                              ' Loop through each file in the folder
                              FileName = Dir(FolderPath & "*.doc*")
                              Do While FileName <> ""
                                  ' Construct the full path of the document
                                  DocumentPath = FolderPath & FileName
                                  
                                  ' Open the document
                                  Set doc = Documents.Open(FileName:=DocumentPath)
                                  
                                  ' Perform the search and replace
                                  With doc.Content.Find
                                      .ClearFormatting
                                      .text = "הזן כאן את הטקסט לחיפוש" ' Replace "SearchText" with your desired search text
                                      .Replacement.ClearFormatting
                                      .Replacement.text = "הזן כאן את הטקסט להחלפה" ' Replace "ReplaceText" with your desired replacement text
                                      .Execute Replace:=wdReplaceAll
                                       End With
                                  
                                  ' Save and close the document
                                  doc.Close SaveChanges:=True
                                  
                                  ' Increment counter
                                  Counter = Counter + 1
                                  
                                  ' Move to the next file
                                  FileName = Dir
                              Loop
                              
                              ' Enable screen updating
                              Application.ScreenUpdating = True
                              
                              ' Display results
                              MsgBox "Search and Replace completed." & vbCrLf & _
                                  "Total Documents Processed: " & Counter
                          End Sub
                          

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

                          Sub SearchReplaceAllDocuments()
                              Dim FileDialog As FileDialog
                              Dim FilePaths As Variant
                              Dim FileName As Variant
                              Dim srchtxt As String, rplctxt As String
                              Dim doc As Document, Counter As Long
                              Dim wldcrds As VbMsgBoxResult, srchwldcrds As Boolean
                              
                             wldcrds = MsgBox("האם ברצונך להשתמש עם תווים כלליים בחיפוש זה?", vbYesNoCancel + vbMsgBoxRight + vbMsgBoxRtlReading + vbQuestion, "חיפוש והחלפה במסמכים מרובים")
                              If wldcrds = vbYes Then srchwldcrds = True
                              If wldcrds = vbNo Then srchwldcrds = False
                              If wldcrds = vbCancel Then Exit Sub
                                
                              srchtxt = InputBox("הזן טקסט או קוד לחיפוש", "חיפוש והחלפה במסמכים מרובים")
                              rplctxt = InputBox("הזן טקסט או קוד להחלפה", "חיפוש והחלפה במסמכים מרובים")
                              
                              ' Open the file picker dialog
                              Set FileDialog = Application.FileDialog(msoFileDialogFilePicker)
                              With FileDialog
                                  .Title = "בחר קבצים (חיפוש בקבצים מרובים לפי בחירת קבצים)"
                                  .AllowMultiSelect = True
                                  .Filters.Clear
                                  .Filters.Add "Word Documents", "*.doc*"
                                  If .Show = -1 Then
                          '            FilePaths = .SelectedItems
                                  
                              
                              ' Disable screen updating for faster execution
                              Application.ScreenUpdating = False
                              
                              ' Initialize counter
                              Counter = 0
                              
                              ' Loop through each selected file
                              For Each FileName In .SelectedItems
                                  ' Open the document
                                  Set doc = Documents.Open(FileName:=FileName)
                                  
                                  ' Perform the search and replace
                                  With doc.Content.Find
                                      .ClearFormatting
                                      .Text = srchtxt
                                      .Replacement.ClearFormatting
                                      .Replacement.Text = rplctxt
                                      .MatchWildcards = srchwldcrds
                                      .Execute Replace:=wdReplaceAll
                                  End With
                                  
                                  ' Save and close the document
                                  doc.Close SaveChanges:=True
                                  
                                  ' Increment counter
                                  Counter = Counter + 1
                              Next FileName
                              
                              ' Enable screen updating
                              Application.ScreenUpdating = True
                              
                              ' Display results
                               ' Display results
                              MsgBox "פעולת ההחלפה הסתיימה." & vbCrLf & _
                                  "מספר המסמכים שבוצע בהם החלפה הם: " & Counter, vbMsgBoxRight, vbMsgBoxRtlReading, "הפעולה הסתיימה"
                                      
                                  End If
                              End With
                          End Sub
                          

                          עריכה שניה:
                          עכשיו מצאתי את זה
                          https://wordmvp.com/FAQs/MacrosVBA/BatchFR.htm
                          יש שם הרבה רעיונות עבור שיפור הקוד

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

                            פתיחת מסמכים מרובים

                            Sub OpenAllDocumentsInFolder()
                                Dim FolderPath As String
                                Dim FileName As String
                                Dim DocumentPath As String
                                
                                ' Select the folder containing the documents
                                With Application.FileDialog(msoFileDialogFolderPicker)
                                    .Title = "Select Folder"
                                    If .Show = -1 Then
                                        FolderPath = .SelectedItems(1) & "\"
                                    Else
                                        Exit Sub
                                    End If
                                End With
                                
                                ' Disable screen updating for faster execution
                                Application.ScreenUpdating = False
                                
                                ' Loop through each file in the folder
                                FileName = Dir(FolderPath & "*.doc*")
                                Do While FileName <> ""
                                    ' Construct the full path of the document
                                    DocumentPath = FolderPath & FileName
                                    
                                    ' Open the document
                                    Documents.Open FileName:=DocumentPath
                                    
                                    ' Move to the next file
                                    FileName = Dir
                                Loop
                                
                                ' Enable screen updating
                                Application.ScreenUpdating = True
                            End Sub
                            
                            1 תגובה 1 תגובה אחרונה
                            0
                            • P pcinfogmach

                              פתיחת מסמכים מרובים

                              Sub OpenAllDocumentsInFolder()
                                  Dim FolderPath As String
                                  Dim FileName As String
                                  Dim DocumentPath As String
                                  
                                  ' Select the folder containing the documents
                                  With Application.FileDialog(msoFileDialogFolderPicker)
                                      .Title = "Select Folder"
                                      If .Show = -1 Then
                                          FolderPath = .SelectedItems(1) & "\"
                                      Else
                                          Exit Sub
                                      End If
                                  End With
                                  
                                  ' Disable screen updating for faster execution
                                  Application.ScreenUpdating = False
                                  
                                  ' Loop through each file in the folder
                                  FileName = Dir(FolderPath & "*.doc*")
                                  Do While FileName <> ""
                                      ' Construct the full path of the document
                                      DocumentPath = FolderPath & FileName
                                      
                                      ' Open the document
                                      Documents.Open FileName:=DocumentPath
                                      
                                      ' Move to the next file
                                      FileName = Dir
                                  Loop
                                  
                                  ' Enable screen updating
                                  Application.ScreenUpdating = True
                              End Sub
                              
                              1 מנותק
                              1 מנותק
                              106
                              כתב ב נערך לאחרונה על ידי 106
                              #23

                              הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.

                              Sub parenthesis()
                              With Selection.Range
                              .InsertBefore "("
                              .InsertAfter ")"
                              End With
                              End Sub
                              
                              ד תגובה 1 תגובה אחרונה
                              2
                              • 1 106

                                הכנסת טקסט נבחר (כגון מראה מקום) לתוך סוגריים.

                                Sub parenthesis()
                                With Selection.Range
                                .InsertBefore "("
                                .InsertAfter ")"
                                End With
                                End Sub
                                
                                ד מנותק
                                ד מנותק
                                דאנציג
                                כתב ב נערך לאחרונה על ידי דאנציג
                                #24

                                @106
                                @dmp הביא פה בעבר הקוד הזה:

                                
                                '
                                ' סוגריים_עגולות Macro
                                '
                                '
                                Selection.Text = "(" & Selection.Text & ")"
                                End Sub
                                

                                וכאן המקום לשאול, כיצד ניתן להרחיב את הסוגריים עד סוף המילה אפילו כאשר עומדים באמצעה.

                                מ תגובה 1 תגובה אחרונה
                                1
                                • ד דאנציג

                                  @106
                                  @dmp הביא פה בעבר הקוד הזה:

                                  
                                  '
                                  ' סוגריים_עגולות Macro
                                  '
                                  '
                                  Selection.Text = "(" & Selection.Text & ")"
                                  End Sub
                                  

                                  וכאן המקום לשאול, כיצד ניתן להרחיב את הסוגריים עד סוף המילה אפילו כאשר עומדים באמצעה.

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

                                  @דאנציג

                                  
                                  Selection.MoveEndWhile Cset:=" ", Count:=wdBackward
                                  Selection.InsertAfter (")")
                                  Selection.InsertBefore ("(")
                                  
                                  
                                  ד תגובה 1 תגובה אחרונה
                                  2
                                  • מ מאקרו

                                    @דאנציג

                                    
                                    Selection.MoveEndWhile Cset:=" ", Count:=wdBackward
                                    Selection.InsertAfter (")")
                                    Selection.InsertBefore ("(")
                                    
                                    
                                    ד מנותק
                                    ד מנותק
                                    דאנציג
                                    כתב ב נערך לאחרונה על ידי
                                    #26

                                    @מאקרו
                                    לא עובד לי.

                                    יש לציין לתוסף המוצלח הזה שעושה זאת נפלא.

                                    P תגובה 1 תגובה אחרונה
                                    1
                                    • ד דאנציג

                                      @מאקרו
                                      לא עובד לי.

                                      יש לציין לתוסף המוצלח הזה שעושה זאת נפלא.

                                      P מנותק
                                      P מנותק
                                      pcinfogmach
                                      מדריכים
                                      כתב ב נערך לאחרונה על ידי pcinfogmach
                                      #27

                                      @דאנציג כתב בשיתוף | אינצקלופדיה שיתופית עבור קודים של מאקרו - איך עושים את....:

                                      וכאן המקום לשאול, כיצד ניתן להרחיב את הסוגריים עד סוף המילה אפילו כאשר עומדים באמצעה.

                                      Selection.MoveEndUntil Cset:=" ", Count:=wdForward
                                      Selection.MoveStartUntil Cset:=" ", Count:=wdBackward
                                      Selection.text = "(" & Selection.text & ")"
                                      

                                      או אפשר ככה למי שמעדיף

                                      With Selection
                                          .MoveEndUntil Cset:=" ", Count:=wdForward
                                          .MoveStartUntil Cset:=" ", Count:=wdBackward
                                          .text = "(" & .text & ")"
                                      End With
                                      

                                      משום מה במילים ארוכות באנגלית הוא עושה קצת בעיות 😞

                                      תגובה 1 תגובה אחרונה
                                      2
                                      • P pcinfogmach

                                        קוד להוספת כותרות צד

                                        Option Explicit
                                        Sub כותרות_צד()
                                        
                                        
                                        Dim numColumns As Integer, currentPara As Paragraph, slctd As Range _
                                                
                                        'set range
                                        Set slctd = Selection.Range
                                        
                                        'start loop
                                        For Each currentPara In slctd.Paragraphs
                                        Application.ScreenUpdating = False
                                        currentPara.Range.Select
                                        
                                        'get column width
                                            numColumns = ActiveDocument.PageSetup.TextColumns.Count
                                            If numColumns = 2 Then
                                                Dim columnWidth As Single
                                                Dim columnWidth2 As Single
                                                columnWidth = ActiveDocument.PageSetup.TextColumns.Item(1).Width
                                                columnWidth2 = ActiveDocument.PageSetup.TextColumns.Item(2).Width
                                            End If
                                            
                                        'exceptions
                                        If Not currentPara.Range.ComputeStatistics(wdStatisticLines) > 1 _
                                        Or Not currentPara.Range.ComputeStatistics(wdStatisticLines) > 2 Then GoTo nxt
                                        
                                        'Get the first sentence of the current paragraph
                                            Dim firstSentence As String
                                            Dim words() As String
                                            words = Split(currentPara.Range.Text, " ")
                                            firstSentence = words(0) & " " & words(1) & " " & words(2) & " " _
                                            & words(3) & " " & words(4) & " " & words(5)
                                            
                                        'get font size set box font size and calc misalignment adjustment accordingly
                                            Dim fontSize, x, y, z As Single
                                            fontSize = currentPara.Range.Font.SizeBi - 4
                                            x = currentPara.Range.Font.SizeBi
                                            y = x - 8
                                            z = y * 0.4
                                            'MsgBox z
                                        
                                        '
                                        'Dim spaceWidth As Double
                                        'spaceWidth = currentPara.Range.font.spacing
                                        'Dim spaceWidth As Double
                                        'spaceWidth = ActiveDocument.PageSetup.TextColumns.spacing / 2
                                        '
                                            
                                            'get middle of page
                                            Dim mrgn As Double
                                            mrgn = ActiveDocument.PageSetup.LeftMargin / 2
                                        
                                            Dim newShape As Shape
                                            'left column - if para calc is smaller then middle of page
                                            If ActiveDocument.PageSetup.PageWidth / 2 > currentPara.Range.Information(wdHorizontalPositionRelativeToPage) Then
                                            Set newShape = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
                                                    Left:=currentPara.Range.Information(wdHorizontalPositionRelativeToPage) - columnWidth2 - mrgn, _
                                                    Top:=currentPara.Range.Information(wdVerticalPositionRelativeToPage), _
                                                    Width:=mrgn, Height:=50)
                                                newShape.TextFrame.TextRange.ParagraphFormat.Alignment = wdAlignParagraphRight
                                                End If
                                                
                                            'right column - if para calc is larger
                                            If ActiveDocument.PageSetup.PageWidth / 2 < currentPara.Range.Information(wdHorizontalPositionRelativeToPage) Then
                                                Set newShape = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
                                                    Left:=currentPara.Range.Information(wdHorizontalPositionRelativeToPage), _
                                                    Top:=currentPara.Range.Information(wdVerticalPositionRelativeToPage), _
                                                    Width:=mrgn, Height:=50)
                                            newShape.TextFrame.TextRange.ParagraphFormat.Alignment = wdAlignParagraphLeft
                                           
                                            End If
                                               'newShape.TextFrame.MarginLeft = 0
                                               'newShape.TextFrame.MarginRight = 0
                                                newShape.TextFrame.MarginTop = z 'adjust misalignment
                                                newShape.TextFrame.MarginBottom = 0
                                                newShape.Line.Visible = msoFalse
                                                newShape.TextFrame.TextRange.Text = firstSentence
                                                newShape.TextFrame.TextRange.Font.SizeBi = 8
                                                newShape.TextFrame.AutoSize = True
                                                
                                        
                                            'tiny adjustment
                                                If ActiveDocument.PageSetup.PageWidth / 2 > currentPara.Range.Information(wdHorizontalPositionRelativeToPage) Then
                                                newShape.TextFrame.MarginTop = newShape.TextFrame.MarginTop - 0.1
                                                Else
                                                newShape.TextFrame.MarginTop = newShape.TextFrame.MarginTop - 0.05
                                                newShape.TextFrame.MarginLeft = newShape.TextFrame.MarginLeft + 0.04
                                                End If
                                                
                                        nxt:
                                        Application.ScreenUpdating = True
                                        Application.ScreenRefresh
                                            Next currentPara
                                            
                                            End Sub
                                            
                                        Sub מחק_כותרת_צד_בכל_המסמך()
                                            Dim shp As Shape, i As Integer, shppos, mrgnright, mrgnleft As Single
                                                
                                                mrgnleft = ActiveDocument.PageSetup.LeftMargin
                                                mrgnright = ActiveDocument.PageSetup.PageWidth - mrgnleft
                                            
                                            For i = ActiveDocument.Shapes.Count To 1 Step -1
                                                Set shp = ActiveDocument.Shapes(i)
                                                shppos = shp.TextFrame.TextRange.Information(wdHorizontalPositionRelativeToPage)
                                                
                                                If shppos > mrgnright Or shppos < mrgnleft _
                                                And shp.Type = msoTextBox And shp.Line.Visible = msoFalse Then
                                                 'And shp.Width = ActiveDocument.PageSetup.LeftMargin / 2 Then
                                                    shp.Delete
                                                End If
                                            
                                            Next i
                                            End Sub
                                        
                                        Sub מחק_כותרות_צד_בעמוד_זה()
                                        Dim shp As Shape, i, currentPage As Integer, _
                                        shppos, mrgnright, mrgnleft As Single
                                            
                                            mrgnleft = ActiveDocument.PageSetup.LeftMargin
                                            mrgnright = ActiveDocument.PageSetup.PageWidth - mrgnleft
                                            
                                            currentPage = Selection.Information(wdActiveEndPageNumber)
                                            Application.ScreenUpdating = False
                                            For Each shp In ActiveDocument.Shapes
                                                shppos = shp.TextFrame.TextRange.Information(wdHorizontalPositionRelativeToPage)
                                                If shp.Anchor.Information(wdActiveEndPageNumber) = currentPage And _
                                                shppos > mrgnright Or shppos < mrgnleft _
                                                And shp.Type = msoTextBox And shp.Line.Visible = msoFalse _
                                                And shp.Anchor.Information(wdActiveEndPageNumber) = currentPage Then
                                                    shp.Select (False)
                                                End If
                                            Next shp
                                            Application.ScreenUpdating = True
                                            Selection.Delete Unit:=wdCharacter, Count:=1
                                        End Sub
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        menajemmendelM מנותק
                                        menajemmendelM מנותק
                                        menajemmendel
                                        כתב ב נערך לאחרונה על ידי menajemmendel
                                        #28

                                        @pcinfogmach כתב בשיתוף | אינצקלופדיה שיתופית עבור קודים של מאקרו - איך עושים את....:

                                        קוד להוספת כותרות צד

                                        לא הבנתי מה בדיוק המטרה של זה, מה רע בליצור סגנון במסגרת??

                                        P תגובה 1 תגובה אחרונה
                                        0
                                        • menajemmendelM menajemmendel

                                          @pcinfogmach כתב בשיתוף | אינצקלופדיה שיתופית עבור קודים של מאקרו - איך עושים את....:

                                          קוד להוספת כותרות צד

                                          לא הבנתי מה בדיוק המטרה של זה, מה רע בליצור סגנון במסגרת??

                                          P מנותק
                                          P מנותק
                                          pcinfogmach
                                          מדריכים
                                          כתב ב נערך לאחרונה על ידי
                                          #29
                                          פוסט זה נמחק!
                                          menajemmendelM תגובה 1 תגובה אחרונה
                                          0

                                          • התחברות

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

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