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

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

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

התייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל

מתוזמן נעוץ נעול הועבר תכנות
74 פוסטים 4 כותבים 3.3k צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פ פלורידה

    אני עומד לפני סיום השלב הראשון בס"ד

    יצרתי טבלה שבכותרות ישנם ברכות, שבת, וכו' ובעמודה הראשונה, ב., ב:, ג., וכו'.

    f2cf9da4-6a1b-4ca4-abae-ad32ff9a8802-image.png

    הצורה לשלוף את המפתח היא על ידי index + matsh.

    הדרך לקבל את המידע היא לפי נתוני המסכת, והדף בטבלה שמקבלת את הדבל קליק, היא על ידי VLookUp עם הסיט שלילי.

    כל הקוד יחד:

    Public Function m_kata(wordText As String) As Variant
    masecet = ActiveSheet.Range("A6")
    ActiveColumn = ActiveCell.Column - ActiveCell.ListObject.DataBodyRange.Column + 1
    tanivchar = Selection
    ActiveTable = ActiveCell.ListObject
    amuda1 = ActiveSheet.ListObjects(ActiveTable).ListColumns(1).DataBodyRange
    amudanivchar = ActiveSheet.ListObjects(ActiveTable).ListColumns(ActiveColumn).DataBodyRange
    
    daf = Application.VLookup(tanivchar, Application.Choose(Array(1, 2), amudanivchar, amuda1), 2, 0)
    
    m_kata = Application.Index(Sheets("מקט").Range("T6:BF356"), Application.Match(daf, Sheets("מקט").Range("S6: S356"), 0), Application.Match(masecet, Sheets("מקט").Range("T6:BF6"), 0))
    
    End Function
    

    כעת נותר להחליט, האם כדאי ליצור את המסד בחוברת עבודה נפרדת, או באותה חוברת עבודה.

    @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

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

    כמו כן אשמח לשמוע על החסרונות של השיטה הזאת (אם יש...)

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

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

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

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

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

      @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

      כלומר: הוא פתוח בכל עת בלי שהמשתמש רואה אותו?
      או שכל פעולה הוא נגש לשם?

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

        @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

        כלומר: הוא פתוח בכל עת בלי שהמשתמש רואה אותו?
        או שכל פעולה הוא נגש לשם?

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

        @פלורידה מטעמי יעילות עדיף שיהיה פתוח כל זמן שהתוכנה פעילה, כך הגישה אליו תהיה יותר מהירה, כי הפתיחה לוקחת זמן.

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

          @פלורידה מטעמי יעילות עדיף שיהיה פתוח כל זמן שהתוכנה פעילה, כך הגישה אליו תהיה יותר מהירה, כי הפתיחה לוקחת זמן.

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

          @odeddvir

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

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

            @odeddvir

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

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

            @פלורידה עיין כאן.

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

              @פלורידה עיין כאן.

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

              @odeddvir

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

              האופציה של Application.ScreenUpdating = False להבנתי אינה גורמת שלא יוצג כלל אלא היא מופיעה בזמן הריצה בלי גישה.

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

                @odeddvir

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

                האופציה של Application.ScreenUpdating = False להבנתי אינה גורמת שלא יוצג כלל אלא היא מופיעה בזמן הריצה בלי גישה.

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

                @פלורידה תשתמש במשתנים גלובליים.
                צור מודול ובו תצהיר על משתנה גלובלי (ציבורי) שיכיל את חוברת הנתונים:

                Public DataWB As Workbook
                

                כעת בפתיחת החוברת שלך, תריץ את הקוד הבא:

                Set DataWB = GetObject("Hadran_Data.xlsx")
                

                ולפני הסגירה תריץ:

                DataWB.Close SaveChanges:=True
                

                כי מסתמא תרצה לשמור את השינויים שביצעת בקובץ הדאטא.

                בין לבין, תוכל לגשת לקובץ הדאטא מכל מקום בקוד על ידי האובייקט DataWB.

                פ 3 תגובות תגובה אחרונה
                2
                • OdedDvirO OdedDvir

                  @פלורידה תשתמש במשתנים גלובליים.
                  צור מודול ובו תצהיר על משתנה גלובלי (ציבורי) שיכיל את חוברת הנתונים:

                  Public DataWB As Workbook
                  

                  כעת בפתיחת החוברת שלך, תריץ את הקוד הבא:

                  Set DataWB = GetObject("Hadran_Data.xlsx")
                  

                  ולפני הסגירה תריץ:

                  DataWB.Close SaveChanges:=True
                  

                  כי מסתמא תרצה לשמור את השינויים שביצעת בקובץ הדאטא.

                  בין לבין, תוכל לגשת לקובץ הדאטא מכל מקום בקוד על ידי האובייקט DataWB.

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

                  @odeddvir

                  אני מנסה לכתוב איליו כך:

                  Application.Goto Workbooks(DataWB).Sheets("גיליון1").Range("a1") = Range("a1").Value
                  

                  מקבל שגיאה
                  Type mismatch

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

                    @odeddvir

                    אני מנסה לכתוב איליו כך:

                    Application.Goto Workbooks(DataWB).Sheets("גיליון1").Range("a1") = Range("a1").Value
                    

                    מקבל שגיאה
                    Type mismatch

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

                    @פלורידה צ"ל כך:

                    DataWB.Sheets("גיליון1").Range("a1")
                    
                    תגובה 1 תגובה אחרונה
                    3
                    • OdedDvirO OdedDvir

                      @פלורידה תשתמש במשתנים גלובליים.
                      צור מודול ובו תצהיר על משתנה גלובלי (ציבורי) שיכיל את חוברת הנתונים:

                      Public DataWB As Workbook
                      

                      כעת בפתיחת החוברת שלך, תריץ את הקוד הבא:

                      Set DataWB = GetObject("Hadran_Data.xlsx")
                      

                      ולפני הסגירה תריץ:

                      DataWB.Close SaveChanges:=True
                      

                      כי מסתמא תרצה לשמור את השינויים שביצעת בקובץ הדאטא.

                      בין לבין, תוכל לגשת לקובץ הדאטא מכל מקום בקוד על ידי האובייקט DataWB.

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

                      @odeddvir

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

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

                        @odeddvir

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

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

                        @פלורידה לא הבנתי מה כוונתך.

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

                          @פלורידה לא הבנתי מה כוונתך.

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

                          @odeddvir
                          כל קובץ שפתחתי אותו פעם אחת על ידי GetObject יותר לא נפתח לי כרגיל, כלומר הוא ירוץ (אני אראה קובץ מוסתר בשולחן העבודה,) אך אינו מוצג.

                          631daada-a1a4-4c90-8e60-6b67f0a0f7f4-image.png

                          ניסיתי להגדיר ככה:

                          DataWB.Visible = True

                          אך קיבלתי שגיאה: Object doesn't support this property or method

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

                            @odeddvir
                            כל קובץ שפתחתי אותו פעם אחת על ידי GetObject יותר לא נפתח לי כרגיל, כלומר הוא ירוץ (אני אראה קובץ מוסתר בשולחן העבודה,) אך אינו מוצג.

                            631daada-a1a4-4c90-8e60-6b67f0a0f7f4-image.png

                            ניסיתי להגדיר ככה:

                            DataWB.Visible = True

                            אך קיבלתי שגיאה: Object doesn't support this property or method

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

                            @פלורידה מעניין... לא הצלחתי לשחזר את התופעה אצלי.🤔
                            בכל מקרה, פתח את הקובץ דאטא, עבור לעורך ה-VBA על ידי מקש F11 ובחלון ה- Immediate למטה תריץ:

                            ThisWorkbook.Windows(1).Visible = True
                            

                            האם כעת מוצג?

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

                              @פלורידה מעניין... לא הצלחתי לשחזר את התופעה אצלי.🤔
                              בכל מקרה, פתח את הקובץ דאטא, עבור לעורך ה-VBA על ידי מקש F11 ובחלון ה- Immediate למטה תריץ:

                              ThisWorkbook.Windows(1).Visible = True
                              

                              האם כעת מוצג?

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

                              @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                              האם כעת מוצג?

                              אכן מוצג
                              מה המספר (1) מבטא?
                              על מנת שאדע כיצד לשלב אותו בקוד

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

                                @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                האם כעת מוצג?

                                אכן מוצג
                                מה המספר (1) מבטא?
                                על מנת שאדע כיצד לשלב אותו בקוד

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

                                @פלורידה את אינדקס החלון מתוך החלונות הפעילים. ניתן לציין לפי מספר או לפי כותרת:

                                Application.Windows(1).Caption = "שמוליק"
                                Application.Windows("שמוליק").ActiveSheet.Calculate
                                
                                פ תגובה 1 תגובה אחרונה
                                0
                                • OdedDvirO OdedDvir

                                  @פלורידה את אינדקס החלון מתוך החלונות הפעילים. ניתן לציין לפי מספר או לפי כותרת:

                                  Application.Windows(1).Caption = "שמוליק"
                                  Application.Windows("שמוליק").ActiveSheet.Calculate
                                  
                                  פ מנותק
                                  פ מנותק
                                  פלורידה
                                  כתב ב נערך לאחרונה על ידי
                                  #67

                                  @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                  Application.Windows(1).Caption = "שמוליק"

                                  אם אני מבין נכון, החלון הפעיל נחשב (1) וכן הלאה.
                                  סביר להניח שכאשר אני פותח חלון על ידי vba הוא לא נחשב פעיל, ולכן הוא מקבל את הערך האחרון מבין החלונות הקיימים

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

                                  כאשר הוא יהפך לפעיל הוא יחזור להיות (1) וכל הקוד ישתבש? ואם נתתי לו שם, זה ישנה את העובדה הזו?

                                  הפיתרון לתת כותרת, גם היא צריכה קודם לדעת את המיקום באינדקס

                                  אני מרגיש שדיברתי יותר מידי... מה חסר לי בהבנה?

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

                                    @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                    Application.Windows(1).Caption = "שמוליק"

                                    אם אני מבין נכון, החלון הפעיל נחשב (1) וכן הלאה.
                                    סביר להניח שכאשר אני פותח חלון על ידי vba הוא לא נחשב פעיל, ולכן הוא מקבל את הערך האחרון מבין החלונות הקיימים

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

                                    כאשר הוא יהפך לפעיל הוא יחזור להיות (1) וכל הקוד ישתבש? ואם נתתי לו שם, זה ישנה את העובדה הזו?

                                    הפיתרון לתת כותרת, גם היא צריכה קודם לדעת את המיקום באינדקס

                                    אני מרגיש שדיברתי יותר מידי... מה חסר לי בהבנה?

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

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

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

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

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

                                      @odeddvir בוודאי יש לך גירסת אופיס 365
                                      לי יש 2019

                                      הצורה שהכנסתי את זה היא כך:

                                      Sub open1()
                                      Set DataWB = GetObject("C:\Desktop\Hadran_Data.xlsx")
                                      DataWB.Visible = True
                                      End Sub
                                      

                                      וכך

                                      Sub סגור()
                                      DataWB.Visible = True
                                      DataWB.Close SaveChanges:=True
                                      End Sub
                                      

                                      בריצה בחלון המיידי מתקבלת השגיאה הבאה:

                                      Run-time error '424':

                                      Object required

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

                                        @odeddvir בוודאי יש לך גירסת אופיס 365
                                        לי יש 2019

                                        הצורה שהכנסתי את זה היא כך:

                                        Sub open1()
                                        Set DataWB = GetObject("C:\Desktop\Hadran_Data.xlsx")
                                        DataWB.Visible = True
                                        End Sub
                                        

                                        וכך

                                        Sub סגור()
                                        DataWB.Visible = True
                                        DataWB.Close SaveChanges:=True
                                        End Sub
                                        

                                        בריצה בחלון המיידי מתקבלת השגיאה הבאה:

                                        Run-time error '424':

                                        Object required

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

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

                                        Sub open1()
                                        Set DataWB = Workbooks.Open("C:\Desktop\Hadran_Data.xlsx")
                                        End Sub
                                        

                                        ותו לא מידי.

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

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

                                          Sub open1()
                                          Set DataWB = Workbooks.Open("C:\Desktop\Hadran_Data.xlsx")
                                          End Sub
                                          

                                          ותו לא מידי.

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

                                          @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

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

                                          OdedDvirO תגובה 1 תגובה אחרונה
                                          0
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          בא תתחבר לדף היומי!
                                          • התחברות

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

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