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

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

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

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

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

    @פלורידה בדיוק!

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

    @odeddvir אז, בינתיים כמו שציינת לצורך פתרון בזק, השתמשתי ברעיון שלך... 🙂

    אך בעזרת ה' גירסא 4 תשתמש ברעיון של @מנחם. (זה יוכל להועיל בעוד הרבה תחומים, כמו יצירת סיכום ללימוד הכולל. וכדו'.

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

    האם לעשות מסד לכל מסכת ועוד מסד בגליון נפרד לכל הגליונות. (שזה אומר ש'תאי ההזנה' יזינו את 'גליון הסיכום', ו'טבלת סיכום המסכת' תשלוף מ'גליון הסיכום', ו'תאי ההזנה' ישלפו מ'טבלת סיכום המסכת' 😇)

    או לדלג על השלב של 'טבלת סכום המסכת'...

    או אולי באופן אחר?

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

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

      @odeddvir אז, בינתיים כמו שציינת לצורך פתרון בזק, השתמשתי ברעיון שלך... 🙂

      אך בעזרת ה' גירסא 4 תשתמש ברעיון של @מנחם. (זה יוכל להועיל בעוד הרבה תחומים, כמו יצירת סיכום ללימוד הכולל. וכדו'.

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

      האם לעשות מסד לכל מסכת ועוד מסד בגליון נפרד לכל הגליונות. (שזה אומר ש'תאי ההזנה' יזינו את 'גליון הסיכום', ו'טבלת סיכום המסכת' תשלוף מ'גליון הסיכום', ו'תאי ההזנה' ישלפו מ'טבלת סיכום המסכת' 😇)

      או לדלג על השלב של 'טבלת סכום המסכת'...

      או אולי באופן אחר?

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

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

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

      תגובה 1 תגובה אחרונה
      1
      • 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
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום