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

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

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

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

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

    בהמשך לפוסט הזה והזה

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

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

    מנחםמ OdedDvirO 2 תגובות תגובה אחרונה
    0
    • מנחםמ מנותק
      מנחםמ מנותק
      מנחם
      השיב לפלורידה ב נערך לאחרונה על ידי
      #2

      @פלורידה
      בלת"ק
      באקסס יש הפרדה בין הטבלאות לשאילתות והטפסים
      אולי צריך לייצר טבלה אחת במקרה שלך [תלמוד בבלי] עם כל הערכים
      ואחר כך לקשר את כל התאים לגליונות
      כך יהיה הרבה יותר קל לגבות את הטבלה?!

      פ תגובה 1 תגובה אחרונה
      2
      • OdedDvirO מחובר
        OdedDvirO מחובר
        OdedDvir
        השיב לפלורידה ב נערך לאחרונה על ידי
        #3

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

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

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

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

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

        פ 2 תגובות תגובה אחרונה
        3
        • פ מנותק
          פ מנותק
          פלורידה
          השיב למנחם ב נערך לאחרונה על ידי
          #4

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

          אולי צריך לייצר טבלה אחת במקרה שלך [תלמוד בבלי] עם כל הערכים
          ואחר כך לקשר את כל התאים לגליונות

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

          הפתרון של @מנחם הוא הדרך הנכונה ללכת בה.

          לא מספיק הבנתי את הרעיון.

          כלומר, אני מניח שלא ניתן לקשר תא באקסל בכיוון דו צדדי, לדוג', שבתא a1 יהיה מה שבתא a2, ואם אני משנה כל אחד מהתאים הללו, השני משתנה.

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

          OdedDvirO תגובה 1 תגובה אחרונה
          0
          • OdedDvirO מחובר
            OdedDvirO מחובר
            OdedDvir
            השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
            #5

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

            כלומר, אני מניח שלא ניתן לקשר תא באקסל בכיוון דו צדדי, לדוג', שבתא a1 יהיה מה שבתא a2, ואם אני משנה כל אחד מהתאים הללו, השני משתנה.

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

            פ תגובה 1 תגובה אחרונה
            1
            • פ מנותק
              פ מנותק
              פלורידה
              השיב לOdedDvir ב נערך לאחרונה על ידי
              #6

              @odeddvir ווואוו !!
              מה שיוצר את המסד מנותק מתאי ההזנה, ובנוסף התא מכיל את התוכן שבמסד.

              תקן אותי אם אני טועה.

              OdedDvirO תגובה 1 תגובה אחרונה
              1
              • OdedDvirO מחובר
                OdedDvirO מחובר
                OdedDvir
                השיב לפלורידה ב נערך לאחרונה על ידי
                #7

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

                פ תגובה 1 תגובה אחרונה
                1
                • פ מנותק
                  פ מנותק
                  פלורידה
                  השיב לOdedDvir ב נערך לאחרונה על ידי
                  #8

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

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

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

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

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

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

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

                  OdedDvirO תגובה 1 תגובה אחרונה
                  1
                  • OdedDvirO מחובר
                    OdedDvirO מחובר
                    OdedDvir
                    השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
                    #9

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

                    תגובה 1 תגובה אחרונה
                    1
                    • פ מנותק
                      פ מנותק
                      פלורידה
                      השיב לOdedDvir ב נערך לאחרונה על ידי
                      #10
                      פוסט זה נמחק!
                      תגובה 1 תגובה אחרונה
                      0
                      • פ מנותק
                        פ מנותק
                        פלורידה
                        השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
                        #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
                        • OdedDvirO מחובר
                          OdedDvirO מחובר
                          OdedDvir
                          השיב לפלורידה ב נערך לאחרונה על ידי
                          #12

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

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

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

                          פ תגובה 1 תגובה אחרונה
                          0
                          • פ מנותק
                            פ מנותק
                            פלורידה
                            השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
                            #13

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

                            לא?

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

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

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

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

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

                              Workbooks("גיבוי.xlsm").Close True
                              
                              OdedDvirO תגובה 1 תגובה אחרונה
                              0
                              • 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
                                • פ פלורידה התייחס לנושא זה ב
                                • פ מנותק
                                  פ מנותק
                                  פלורידה
                                  השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
                                  #16

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

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

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

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

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

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

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

                                    מקור

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

                                    OdedDvirO תגובה 1 תגובה אחרונה
                                    0
                                    • OdedDvirO מחובר
                                      OdedDvirO מחובר
                                      OdedDvir
                                      השיב לפלורידה ב נערך לאחרונה על ידי
                                      #18

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

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

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

                                      פ תגובה 1 תגובה אחרונה
                                      0
                                      • פ מנותק
                                        פ מנותק
                                        פלורידה
                                        השיב לOdedDvir ב נערך לאחרונה על ידי פלורידה
                                        #19

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

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

                                        צפיציפית:

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

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

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

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

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

                                        באופן כללי:

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

                                        OdedDvirO תגובה 1 תגובה אחרונה
                                        1
                                        • OdedDvirO מחובר
                                          OdedDvirO מחובר
                                          OdedDvir
                                          השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
                                          #20

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

                                          תגובה 1 תגובה אחרונה
                                          1
                                          • dovidD dovid העביר נושא זה מ-תכנות ב-

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

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

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