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

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

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

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

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