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

    @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
                                • חוקי הפורום
                                • לא נפתר
                                • משתמשים
                                • חיפוש גוגל בפורום
                                • צור קשר