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

שיתוף | ידיעה חשובה VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת

מתוזמן נעוץ נעול הועבר עזרה הדדית - VBA word
17 פוסטים 7 כותבים 492 צפיות 5 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • menajemmendelM menajemmendel

    אני רוצה לשתף את הציבור בידיעה מאד חשובה, שכמדומני הרבה אנשים לא מכירים אותה [אפ' GPT לא הכיר אותה, ואפ' התכווח איתי שלא קיימת עד שהבתי לו הוכחות מפורשות]
    לאחר הפעלת מאקרו אם עושים ביטול פועלה אחרונה מבטל אותה צד צד, ואם המאקרו היה משהו ארוך, הדבר הזה מאד קשה.
    אז יש פונקציה שמגדיר את כל המאקרו כיחידה אחת לענין ביטול פעולה אחרונה,
    אתם יכולים לע' כאן, פעולה מאד קלה
    https://learn.microsoft.com/en-us/office/vba/word/Concepts/Working-with-Word/working-with-the-undorecord-object
    כמדומני שידידנו @pcinfogmach ו @האדם-החושב שעמלים כ''כ עם התוסף לתועלת הציבור ישמחו לדעת את זה

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

    @menajemmendel ייש כח

    [אפ' GPT לא הכיר אותה, ואפ' התכווח איתי שלא קיימת עד שהבתי לו הוכחות מפורשות]

    אם כי אני לא הייתי טורח להתווכח עם GPT...

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

      @menajemmendel ייש כח

      [אפ' GPT לא הכיר אותה, ואפ' התכווח איתי שלא קיימת עד שהבתי לו הוכחות מפורשות]

      אם כי אני לא הייתי טורח להתווכח עם GPT...

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

      @אליעטר כתב בשיתוף | ידיעה חשובה VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת:

      אם כי אני לא הייתי טורח להתווכח עם GPT...

      אולי הגזמתי לא ממש התווכחתי, אני שאלתי אותו אם יש אפשרות כזאת והוא כדרכו בקודש חינטרש לי משהו Application.BeginUndoUnit, ואחרי שחיפשתי וראיתי שלא קיים כזה דבר, ואמרתי לו, התנצל שטעה וזה עובד רק ב.NET [אין לי מושג] אבל בVBA אין פתרון, רק לשמור עותק לפני
      אחרי הרבה חיפושים הגעתי לזה https://stackoverflow.com/questions/28359422/unding-in-one-step
      וראיתי שאכן יש כזה דבר,
      ואז אמרתי לGPT ואמר לי שאין כזה דבר בWORD רק בACCESS, ואז כתבתי לו קישור לאתר הרשמי של MICROSOT ואז הודה לי

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

        אני רוצה לשתף את הציבור בידיעה מאד חשובה, שכמדומני הרבה אנשים לא מכירים אותה [אפ' GPT לא הכיר אותה, ואפ' התכווח איתי שלא קיימת עד שהבתי לו הוכחות מפורשות]
        לאחר הפעלת מאקרו אם עושים ביטול פועלה אחרונה מבטל אותה צד צד, ואם המאקרו היה משהו ארוך, הדבר הזה מאד קשה.
        אז יש פונקציה שמגדיר את כל המאקרו כיחידה אחת לענין ביטול פעולה אחרונה,
        אתם יכולים לע' כאן, פעולה מאד קלה
        https://learn.microsoft.com/en-us/office/vba/word/Concepts/Working-with-Word/working-with-the-undorecord-object
        כמדומני שידידנו @pcinfogmach ו @האדם-החושב שעמלים כ''כ עם התוסף לתועלת הציבור ישמחו לדעת את זה

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

        @menajemmendel
        חשוב לדעת ששימוש לא נכון בפעולה זו עלול לגרום לתקלות חמורות.
        וכבר היו דברים מעולם שפקודת מאקרו שכתבתי החזירה שגיאה בזמן ריצה ולחצתי על END, ומה שקרה זה שהפקודה של הקלטת פעולות אחרונות לא הגיעה לסיומה וכל הפעולות שהמשכתי לבצע במסמך נשמרו תחת אותו שם עד שהשתמשתי במאקרו אחר או באותו מאקרו שכלל את הפעולה של סיום הצירוף של כל הפעולות, מה שגרם ש Ctrl+Z ביטל הרבה פעולות והרבה עבודה הלכה לטמיון.
        ולכן חשוב מאוד לעבוד בזה עם לכידת שגיאות ובכל מקרה של שגיאה לסיים את הקלטת הפעולות.

        menajemmendelM תגובה 1 תגובה אחרונה
        0
        • מ מאקרו

          @menajemmendel
          חשוב לדעת ששימוש לא נכון בפעולה זו עלול לגרום לתקלות חמורות.
          וכבר היו דברים מעולם שפקודת מאקרו שכתבתי החזירה שגיאה בזמן ריצה ולחצתי על END, ומה שקרה זה שהפקודה של הקלטת פעולות אחרונות לא הגיעה לסיומה וכל הפעולות שהמשכתי לבצע במסמך נשמרו תחת אותו שם עד שהשתמשתי במאקרו אחר או באותו מאקרו שכלל את הפעולה של סיום הצירוף של כל הפעולות, מה שגרם ש Ctrl+Z ביטל הרבה פעולות והרבה עבודה הלכה לטמיון.
          ולכן חשוב מאוד לעבוד בזה עם לכידת שגיאות ובכל מקרה של שגיאה לסיים את הקלטת הפעולות.

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

            פוסט זה נמחק!

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

            @menajemmendel
            לתועלת העניין ולמקרה שזה עדיין רלוונטי:

            לכידת שגיאות הינה פקודת

            on error
            

            בה אתה מגדיר מה התוכנה תעשה במקרה של שגיאה
            מקובל לעשות משהו כמו

            on error goto error_handler
            

            ואז בסוף הקוד לשים

            exit sub
            error_handler:
            

            ואז
            msgbox (עם הודעה כלשהי)
            ובמקרה שלך לעשות את סיום לכידת הטקסט.

            גמ"ח עזרה וייעוץ בנושאי מחשבים

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

              אני רוצה לשתף את הציבור בידיעה מאד חשובה, שכמדומני הרבה אנשים לא מכירים אותה [אפ' GPT לא הכיר אותה, ואפ' התכווח איתי שלא קיימת עד שהבתי לו הוכחות מפורשות]
              לאחר הפעלת מאקרו אם עושים ביטול פועלה אחרונה מבטל אותה צד צד, ואם המאקרו היה משהו ארוך, הדבר הזה מאד קשה.
              אז יש פונקציה שמגדיר את כל המאקרו כיחידה אחת לענין ביטול פעולה אחרונה,
              אתם יכולים לע' כאן, פעולה מאד קלה
              https://learn.microsoft.com/en-us/office/vba/word/Concepts/Working-with-Word/working-with-the-undorecord-object
              כמדומני שידידנו @pcinfogmach ו @האדם-החושב שעמלים כ''כ עם התוסף לתועלת הציבור ישמחו לדעת את זה

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

              @menajemmendel אולי ש @pcinfogmach יוסיף את זה לעיצוב תורני?

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

                @menajemmendel אולי ש @pcinfogmach יוסיף את זה לעיצוב תורני?

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

                @121244 זה לא שצריך להוסיף כפתור אחד, ומבטל את המאקרו אחרון, אלא הוא משפט שצריך להוסיף על כל מאקרו ומאקרו כדי שאותו מאקרו יוכל להתבטל, הוה אומר שזה עבודה לא קטנה בכלל.

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

                  @121244 זה לא שצריך להוסיף כפתור אחד, ומבטל את המאקרו אחרון, אלא הוא משפט שצריך להוסיף על כל מאקרו ומאקרו כדי שאותו מאקרו יוכל להתבטל, הוה אומר שזה עבודה לא קטנה בכלל.

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

                  @menajemmendel נו באמת.
                  אין ל @pcinfogmach איזה מאקרו שיוסיף את זה אחד אחד? 😜

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

                    אני רוצה לשתף את הציבור בידיעה מאד חשובה, שכמדומני הרבה אנשים לא מכירים אותה [אפ' GPT לא הכיר אותה, ואפ' התכווח איתי שלא קיימת עד שהבתי לו הוכחות מפורשות]
                    לאחר הפעלת מאקרו אם עושים ביטול פועלה אחרונה מבטל אותה צד צד, ואם המאקרו היה משהו ארוך, הדבר הזה מאד קשה.
                    אז יש פונקציה שמגדיר את כל המאקרו כיחידה אחת לענין ביטול פעולה אחרונה,
                    אתם יכולים לע' כאן, פעולה מאד קלה
                    https://learn.microsoft.com/en-us/office/vba/word/Concepts/Working-with-Word/working-with-the-undorecord-object
                    כמדומני שידידנו @pcinfogmach ו @האדם-החושב שעמלים כ''כ עם התוסף לתועלת הציבור ישמחו לדעת את זה

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

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

                    Dim my_undo As Object // מי שלא מבין שורה זאת היא שלא התייחס אליה
                     Set my_undo = Application.UndoRecord
                     my_undo.StartCustomRecord ("כאן כותבים השם של החטיבה איך שרוצים שיופיעה בתוך הרשימה של ביטול פעולה אחרונה")
                    

                    אחרי זה כו כותבים כל המאקרו וכו'
                    ובסוף

                    my_undo.EndCustomRecord
                    

                    נמצא משהו כזה:

                     Set my_undo = Application.UndoRecord
                     my_undo.StartCustomRecord ("my name")
                     ''''MACRO''''
                     my_undo.EndCustomRecord
                    

                    אלא שיש בעיה שהעיר עליה ידינו @מאקרו והוא, שאם מאיזה סיבה יהיה תקלה באמצע המאקרו ולא יגמר, אזי לא יגיע לסוף הסוגריים, ולא יסגר אף פעם ה''סוגריים'' של הביטול פעולה אחרונה, ו''ביטלנו'' מוורד את האפשרות לבטל פעולה אחרונה.

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

                    Dim my_undo As Object
                    Set my_undo = Application.UndoRecord
                    my_undo.StartCustomRecord ("my name")
                    On Error GoTo ending
                    
                     ''''MACRO''''
                    
                    ending:
                    my_undo.EndCustomRecord
                    
                    P תגובה 1 תגובה אחרונה
                    5
                    • menajemmendelM menajemmendel

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

                      Dim my_undo As Object // מי שלא מבין שורה זאת היא שלא התייחס אליה
                       Set my_undo = Application.UndoRecord
                       my_undo.StartCustomRecord ("כאן כותבים השם של החטיבה איך שרוצים שיופיעה בתוך הרשימה של ביטול פעולה אחרונה")
                      

                      אחרי זה כו כותבים כל המאקרו וכו'
                      ובסוף

                      my_undo.EndCustomRecord
                      

                      נמצא משהו כזה:

                       Set my_undo = Application.UndoRecord
                       my_undo.StartCustomRecord ("my name")
                       ''''MACRO''''
                       my_undo.EndCustomRecord
                      

                      אלא שיש בעיה שהעיר עליה ידינו @מאקרו והוא, שאם מאיזה סיבה יהיה תקלה באמצע המאקרו ולא יגמר, אזי לא יגיע לסוף הסוגריים, ולא יסגר אף פעם ה''סוגריים'' של הביטול פעולה אחרונה, ו''ביטלנו'' מוורד את האפשרות לבטל פעולה אחרונה.

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

                      Dim my_undo As Object
                      Set my_undo = Application.UndoRecord
                      my_undo.StartCustomRecord ("my name")
                      On Error GoTo ending
                      
                       ''''MACRO''''
                      
                      ending:
                      my_undo.EndCustomRecord
                      
                      P מנותק
                      P מנותק
                      pcinfogmach
                      מדריכים
                      כתב ב נערך לאחרונה על ידי
                      #11

                      @menajemmendel
                      רק הערה קטנה: הוספת קוד זה למאקרו עלול להאט את המאקרו ובפרט במאקרו מורכב.
                      לשיקולכם....

                      גמ"ח עזרה וייעוץ בנושאי מחשבים

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

                        @menajemmendel
                        רק הערה קטנה: הוספת קוד זה למאקרו עלול להאט את המאקרו ובפרט במאקרו מורכב.
                        לשיקולכם....

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

                        @pcinfogmach
                        איך אתה יודע? לא שאני לא מאמין לך, אני מתכוון, איך גילית את זה?

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

                          @pcinfogmach
                          איך אתה יודע? לא שאני לא מאמין לך, אני מתכוון, איך גילית את זה?

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

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

                          הבעיה היא שמאקרו זה דבר כל כך עדין (או דפוק) שכל דבר קטן "מעצבן אותו".

                          גמ"ח עזרה וייעוץ בנושאי מחשבים

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

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

                            הבעיה היא שמאקרו זה דבר כל כך עדין (או דפוק) שכל דבר קטן "מעצבן אותו".

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

                            @pcinfogmach כתב בשיתוף | ידיעה חשובה VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת:

                            וגם מסברא

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

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

                              @pcinfogmach כתב בשיתוף | ידיעה חשובה VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת:

                              וגם מסברא

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

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

                              @menajemmendel כתב בשיתוף | ידיעה חשובה VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת:

                              ואילו ע''י פקודה זו הוא מפסיק לצלם בכל פעולה, אלא עושה צילום בתהחלב ובסוף

                              אני לא בעניינים אבל לפי מה שזכור לי הוא ממשיך לצלם ואדרבה הוא יוצר איזהו ערימה של צילומים.

                              ציטוט מלינק שהבאת בתחילת השרשרור:
                              The StartCustomRecord method begins recording the actions that are included in the custom undo record.
                              ועוד שם:
                              All the actions taken by the code between the StartCustomRecord call and the EndCustomRecord call are linked into one UndoRecord object.

                              גמ"ח עזרה וייעוץ בנושאי מחשבים

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

                                הוספתי את הפקודה הזו לתוסף "וורד תורני" [במודול RIBBONCONTROL, כדי לחסוך הרבה עבודה]
                                ובחלק מהמאקרואים זה מקריס את וורד, מה גם שמאקרו שהפקודה שלו היא להציג את היוזר פורם התוספת הזו לא עוזרת [אולי צריך להוסיף את זה לתוך המאקרו שביוזר פורם עצמו?]
                                וורד תורני כולל ביטול.dotm

                                P תגובה 1 תגובה אחרונה
                                0
                                • האדם החושבה האדם החושב

                                  הוספתי את הפקודה הזו לתוסף "וורד תורני" [במודול RIBBONCONTROL, כדי לחסוך הרבה עבודה]
                                  ובחלק מהמאקרואים זה מקריס את וורד, מה גם שמאקרו שהפקודה שלו היא להציג את היוזר פורם התוספת הזו לא עוזרת [אולי צריך להוסיף את זה לתוך המאקרו שביוזר פורם עצמו?]
                                  וורד תורני כולל ביטול.dotm

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

                                  @האדם-החושב כתב בשיתוף | ידיעה חשובה VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת:

                                  אולי צריך להוסיף את זה לתוך המאקרו שביוזר פורם עצמו?

                                  כן

                                  גמ"ח עזרה וייעוץ בנושאי מחשבים

                                  תגובה 1 תגובה אחרונה
                                  1
                                  • menajemmendelM menajemmendel התייחס לנושא זה
                                  • menajemmendelM menajemmendel התייחס לנושא זה
                                  • מ מניין התייחס לנושא זה

                                  • התחברות

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

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