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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. כיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?

כיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?

מתוזמן נעוץ נעול הועבר תכנות
20 פוסטים 3 כותבים 609 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • OdedDvirO OdedDvir

    @פלורידה הפתרון של @מנחם הוא הדרך הנכונה ללכת בה.
    אמנם היא הדרך הארוכה הקצרה, אבל לטווח ארוך היא משתלמת.

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

    להלן הפונקציה החדשה להעתקת החוברת כולה לקובץ גיבוי:

    Public Sub BackupTo(targetWorkbook As String)
        Application.DisplayAlerts = False
        ThisWorkbook.SaveAs targetWorkbook, xlOpenXMLWorkbookMacroEnabled
        Application.DisplayAlerts = True
    End Sub
    

    שים לב שהקוד משכתב את קובץ הגיבוי הקיים, ללא תיבת דו-שיח. אם אתה רוצה להציג דיאלוג למשתמש, תמחק את שורות 2 ו-4.

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

      @פלורידה הפתרון של @מנחם הוא הדרך הנכונה ללכת בה.
      אמנם היא הדרך הארוכה הקצרה, אבל לטווח ארוך היא משתלמת.

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

      להלן הפונקציה החדשה להעתקת החוברת כולה לקובץ גיבוי:

      Public Sub BackupTo(targetWorkbook As String)
          Application.DisplayAlerts = False
          ThisWorkbook.SaveAs targetWorkbook, xlOpenXMLWorkbookMacroEnabled
          Application.DisplayAlerts = True
      End Sub
      

      שים לב שהקוד משכתב את קובץ הגיבוי הקיים, ללא תיבת דו-שיח. אם אתה רוצה להציג דיאלוג למשתמש, תמחק את שורות 2 ו-4.

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

      @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

      להלן הפונקציה החדשה להעתקת החוברת כולה לקובץ גיבוי:
      Public Sub BackupTo(targetWorkbook As String) Application.DisplayAlerts = False ThisWorkbook.SaveAs targetWorkbook, xlOpenXMLWorkbookMacroEnabled Application.DisplayAlerts = True End Sub

      למעשה שיניתי מעט את הקוד.

      Sub גיבוי()
       Application.DisplayAlerts = False
              ActiveWorkbook.Save
         BackupTo ActiveWorkbook.Path & "\גיבוי.xlsm"
             Workbooks.Open Filename:="\הדרן עלך.xlsm"
      ActiveWorkbook.Close True
      End Sub
      

      כאשר בשורה 3 הוא שומר את הקובץ לפני שהוא עושה לו שמירה בשם, (מה שעלול היה לבטל את כל השינויים בקובץ המקורי)

      בשורה 5 הוא "אמור" לפתוח מחדש את הקובץ הדרן עלך...

      ובשורה 6 הוא "אמור" לסגור את הקובץ....

      אך למרות שחשבתי את עצמי כבר גאון ב 'vba' עם ותק של חודש... שורה 5 ו 6 לא פועלים כמו שצריך...

      בשורה 5 הוא לא מזהה את שם הקובץ \הדרן עלך בעוד אני התכוונתי לציין את הנתיב על ידי \ שייפתח באותו תיקייה...

      ובשורה 6 הוא גם בעייתי, כי הוא סוגר את הקובץ הפעיל, כלומר את הקובץ שפתחתי כעת, בעוד אני מעוניין שיסגור לי את קובץ "גיבוי"

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

        @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

        להלן הפונקציה החדשה להעתקת החוברת כולה לקובץ גיבוי:
        Public Sub BackupTo(targetWorkbook As String) Application.DisplayAlerts = False ThisWorkbook.SaveAs targetWorkbook, xlOpenXMLWorkbookMacroEnabled Application.DisplayAlerts = True End Sub

        למעשה שיניתי מעט את הקוד.

        Sub גיבוי()
         Application.DisplayAlerts = False
                ActiveWorkbook.Save
           BackupTo ActiveWorkbook.Path & "\גיבוי.xlsm"
               Workbooks.Open Filename:="\הדרן עלך.xlsm"
        ActiveWorkbook.Close True
        End Sub
        

        כאשר בשורה 3 הוא שומר את הקובץ לפני שהוא עושה לו שמירה בשם, (מה שעלול היה לבטל את כל השינויים בקובץ המקורי)

        בשורה 5 הוא "אמור" לפתוח מחדש את הקובץ הדרן עלך...

        ובשורה 6 הוא "אמור" לסגור את הקובץ....

        אך למרות שחשבתי את עצמי כבר גאון ב 'vba' עם ותק של חודש... שורה 5 ו 6 לא פועלים כמו שצריך...

        בשורה 5 הוא לא מזהה את שם הקובץ \הדרן עלך בעוד אני התכוונתי לציין את הנתיב על ידי \ שייפתח באותו תיקייה...

        ובשורה 6 הוא גם בעייתי, כי הוא סוגר את הקובץ הפעיל, כלומר את הקובץ שפתחתי כעת, בעוד אני מעוניין שיסגור לי את קובץ "גיבוי"

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

        @פלורידה אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

        בשורה 5 הוא "אמור" לפתוח מחדש את הקובץ הדרן עלך...

        למה? הוא כבר פתוח, לא?

        פ תגובה 1 תגובה אחרונה
        0
        • OdedDvirO OdedDvir

          @פלורידה אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

          בשורה 5 הוא "אמור" לפתוח מחדש את הקובץ הדרן עלך...

          למה? הוא כבר פתוח, לא?

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

          @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

          לא?

          לא. כי כאשר עושים לקובץ פתוח שמור בשם, אז הוא שומר בשם אחר, והקובץ המקורי נשאר סגור.

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

            @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

            להלן הפונקציה החדשה להעתקת החוברת כולה לקובץ גיבוי:
            Public Sub BackupTo(targetWorkbook As String) Application.DisplayAlerts = False ThisWorkbook.SaveAs targetWorkbook, xlOpenXMLWorkbookMacroEnabled Application.DisplayAlerts = True End Sub

            למעשה שיניתי מעט את הקוד.

            Sub גיבוי()
             Application.DisplayAlerts = False
                    ActiveWorkbook.Save
               BackupTo ActiveWorkbook.Path & "\גיבוי.xlsm"
                   Workbooks.Open Filename:="\הדרן עלך.xlsm"
            ActiveWorkbook.Close True
            End Sub
            

            כאשר בשורה 3 הוא שומר את הקובץ לפני שהוא עושה לו שמירה בשם, (מה שעלול היה לבטל את כל השינויים בקובץ המקורי)

            בשורה 5 הוא "אמור" לפתוח מחדש את הקובץ הדרן עלך...

            ובשורה 6 הוא "אמור" לסגור את הקובץ....

            אך למרות שחשבתי את עצמי כבר גאון ב 'vba' עם ותק של חודש... שורה 5 ו 6 לא פועלים כמו שצריך...

            בשורה 5 הוא לא מזהה את שם הקובץ \הדרן עלך בעוד אני התכוונתי לציין את הנתיב על ידי \ שייפתח באותו תיקייה...

            ובשורה 6 הוא גם בעייתי, כי הוא סוגר את הקובץ הפעיל, כלומר את הקובץ שפתחתי כעת, בעוד אני מעוניין שיסגור לי את קובץ "גיבוי"

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

            @פלורידה אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

            ובשורה 6 הוא גם בעייתי, כי הוא סוגר את הקובץ הפעיל, כלומר את הקובץ שפתחתי כעת, בעוד אני מעוניין שיסגור לי את קובץ "גיבוי"

            לזה אני חושב שהפיתרון הוא

            Workbooks("גיבוי.xlsm").Close True
            
            OdedDvirO תגובה 1 תגובה אחרונה
            0
            • פ פלורידה

              @פלורידה אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

              ובשורה 6 הוא גם בעייתי, כי הוא סוגר את הקובץ הפעיל, כלומר את הקובץ שפתחתי כעת, בעוד אני מעוניין שיסגור לי את קובץ "גיבוי"

              לזה אני חושב שהפיתרון הוא

              Workbooks("גיבוי.xlsm").Close True
              
              OdedDvirO מנותק
              OdedDvirO מנותק
              OdedDvir
              כתב ב נערך לאחרונה על ידי
              #15

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

              Public Sub BackupTo(targetWorkbook As String)
                  Application.DisplayAlerts = False
                  ThisWorkbook.SaveCopyAs targetWorkbook
                  Application.DisplayAlerts = True
              End Sub
              
              פ תגובה 1 תגובה אחרונה
              2
              • פ פלורידה התייחס לנושא זה ב
              • OdedDvirO OdedDvir

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

                Public Sub BackupTo(targetWorkbook As String)
                    Application.DisplayAlerts = False
                    ThisWorkbook.SaveCopyAs targetWorkbook
                    Application.DisplayAlerts = True
                End Sub
                
                פ מנותק
                פ מנותק
                פלורידה
                כתב ב נערך לאחרונה על ידי פלורידה
                #16

                @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

                                                                                                                                            Public Sub BackupTo(targetWorkbook As String)                                                                                                                                                                                Application.DisplayAlerts = False                                                                                                                                                                                ThisWorkbook.SaveCopyAs targetWorkbook                                                                                                                                                                                Application.DisplayAlerts = True                                                                                                                                                                            End Sub                                            
                

                ניתן לשמור בתבנית שונה מהמקור? xlsx

                משום שבצורה הנוכחית שנשמר עם המאקרו, זה יוצר בעיות מסוימות.

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

                  @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

                                                                                                                                              Public Sub BackupTo(targetWorkbook As String)                                                                                                                                                                                Application.DisplayAlerts = False                                                                                                                                                                                ThisWorkbook.SaveCopyAs targetWorkbook                                                                                                                                                                                Application.DisplayAlerts = True                                                                                                                                                                            End Sub                                            
                  

                  ניתן לשמור בתבנית שונה מהמקור? xlsx

                  משום שבצורה הנוכחית שנשמר עם המאקרו, זה יוצר בעיות מסוימות.

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

                  כעת גיליתי את הבעיה שלי:

                  אין אפשרות להשתמש בFileFormat בעת שימוש ב SaveCopyAs

                  מקור

                  יש שם באתר עשרות הצעות איך לפתור את זה (יותר נכון איך לעקוף את זה) רובם עוסקים באפשרות לשמור את הקובץ (SaveCopyAs) בתבנית xlsm, ואח"כ לפתוח אותו ולשמור אותו מחדש (SaveAs) בתבנית xslx, וכדו'. מה שלא בדווקא פותר את הבעיה.

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

                    כעת גיליתי את הבעיה שלי:

                    אין אפשרות להשתמש בFileFormat בעת שימוש ב SaveCopyAs

                    מקור

                    יש שם באתר עשרות הצעות איך לפתור את זה (יותר נכון איך לעקוף את זה) רובם עוסקים באפשרות לשמור את הקובץ (SaveCopyAs) בתבנית xlsm, ואח"כ לפתוח אותו ולשמור אותו מחדש (SaveAs) בתבנית xslx, וכדו'. מה שלא בדווקא פותר את הבעיה.

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

                    @פלורידה אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

                    מה שלא בדווקא פותר את הבעיה.

                    תוכל לפרט מה בדיוק הבעיה בזה? לכאורה זה נראה הפתרון.

                    פ תגובה 1 תגובה אחרונה
                    0
                    • OdedDvirO OdedDvir

                      @פלורידה אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

                      מה שלא בדווקא פותר את הבעיה.

                      תוכל לפרט מה בדיוק הבעיה בזה? לכאורה זה נראה הפתרון.

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

                      @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

                      תוכל לפרט מה בדיוק הבעיה בזה?

                      צפיציפית:

                      אני יוצר שחזור אוטומטי.
                      האירוע שמפעיל אותו הוא פתיחת הגליון.

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

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

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

                      מה יקרה אז? אני לא יודע...

                      באופן כללי:

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

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

                        @odeddvir אמר בכיצד לגבות ולשחזר טווחים מסויימים מחוברת אקסל?:

                        תוכל לפרט מה בדיוק הבעיה בזה?

                        צפיציפית:

                        אני יוצר שחזור אוטומטי.
                        האירוע שמפעיל אותו הוא פתיחת הגליון.

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

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

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

                        מה יקרה אז? אני לא יודע...

                        באופן כללי:

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

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

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

                        תגובה 1 תגובה אחרונה
                        1
                        • dovidD dovid העביר נושא זה מ-תכנות ב-
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


                        בא תתחבר לדף היומי!
                        • התחברות

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

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