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

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

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

עריכת קוד VBA באקסל

מתוזמן נעוץ נעול הועבר תכנות
23 פוסטים 2 כותבים 1.7k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • searchnicksS מנותק
    searchnicksS מנותק
    searchnicks
    השיב לdovid ב נערך לאחרונה על ידי
    #5

    @dovid
    תודה רבה על הרצון שלך לעזור
    לא כל כך הבנתי מה התכוונת
    אני רוצה לכתוב בקוד שיציב את הנתונים שקיבל במקום מסויים שאציין בתוך הקוד

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #6
      Sub GetFileList()
          Dim xFSO As Object
          Dim xFolder As Object
          Dim xFile As Object
          Dim xPath As String
          Dim i As Integer
          Dim location As Range
          
          xPath = "C:\Program Files"
          
          Set xFSO = CreateObject("Scripting.FileSystemObject")
          Set xFolder = xFSO.GetFolder(xPath)
           
          
          Set location = Worksheets(1).Range("A5")
      
          
          location.Value = "Folder name"
          location.Offset(0, 1) = "File name"
          location.Offset(0, 2) = "File extension"
          i = 0
          For Each xFile In xFolder.Files
              i = i + 1
              location.Offset(i, 0) = xPath
              location.Offset(i, 1) = Left(xFile.Name, InStrRev(xFile.Name, ".") - 1)
              location.Offset(i, 2) = Mid(xFile.Name, InStrRev(xFile.Name, ".") + 1)
          Next
      End Sub
      

      הכתובת נמצאת במקטע Worksheets(1).Range("A5")
      ה1 זה מס' הגליון, תוכל להחליף זאת במספר אחר או בשם (אבל מוקף מרכאות).

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      searchnicksS תגובה 1 תגובה אחרונה
      2
      • searchnicksS מנותק
        searchnicksS מנותק
        searchnicks
        השיב לdovid ב נערך לאחרונה על ידי
        #7

        @dovid
        תודה רבה!
        עובד היטב!
        חסכת לי הרבה עבודה!

        תגובה 1 תגובה אחרונה
        1
        • searchnicksS מנותק
          searchnicksS מנותק
          searchnicks
          כתב ב נערך לאחרונה על ידי
          #8

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

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

            @מתמחה-במחשבים אמר בעריכת קוד VBA באקסל:

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

            ניסיתי לעשות בעצמי
            כך שבמקום xPats (המשתנה בסוגריים)
            הכנסתי

            range("גיליון1!H5").value
            

            הרעיון לעצמו עובד
            אך שאני מפעיל אותו הוא לוקח זמן רב
            איפה טעיתי?

            dovidD תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              השיב לsearchnicks ב נערך לאחרונה על ידי
              #10

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

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              searchnicksS תגובה 1 תגובה אחרונה
              1
              • searchnicksS מנותק
                searchnicksS מנותק
                searchnicks
                השיב לdovid ב נערך לאחרונה על ידי searchnicks
                #11

                @dovid
                קודם תודה רבה על הציון לשבח

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

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

                אם תרצה אתאר לשם מה אני משתמש בזה

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #12

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

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                    @dovid
                    זה הקוד כפתור ראשון

                    Sub browseFolderPath()
                        On Error GoTo err
                        Dim fileExplorer As FileDialog
                        Set fileExplorer = Application.FileDialog(msoFileDialogFolderPicker)
                        
                        'To allow or disable to multi select
                        fileExplorer.AllowMultiSelect = False
                        
                        With fileExplorer
                            If .Show = -1 Then 'Any folder is selected
                                ['גיליון5'!H1] = .SelectedItems.Item(1)
                            Else ' else dialog is cancelled
                                MsgBox "עליך לבחור נתיב תיקיה מתאימה"
                            End If
                        End With
                    err:
                        Exit Sub
                    End Sub
                    
                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #14

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

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      searchnicksS 3 תגובות תגובה אחרונה
                      0
                      • searchnicksS מנותק
                        searchnicksS מנותק
                        searchnicks
                        השיב לdovid ב נערך לאחרונה על ידי searchnicks
                        #15

                        @dovid אמר בעריכת קוד VBA באקסל:

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

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

                        תגובה 1 תגובה אחרונה
                        0
                        • searchnicksS מנותק
                          searchnicksS מנותק
                          searchnicks
                          השיב לdovid ב נערך לאחרונה על ידי
                          #16

                          @dovid אמר בעריכת קוד VBA באקסל:

                          נקוד של הכפתור השני מופעל אוטומטית בשינוי של הראשון או רק לאחר לחיצה?

                          רק לאחר לחיצה

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

                            לפי הנתונים שלך התיאוריה שלך נכונה, אבל היא לא.
                            אז מה הפשט? לא יודע.

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            searchnicksS תגובה 1 תגובה אחרונה
                            1
                            • searchnicksS מנותק
                              searchnicksS מנותק
                              searchnicks
                              השיב לdovid ב נערך לאחרונה על ידי
                              #18

                              @dovid
                              תודה רבה
                              איך אוכל לעלות על שורש הבעיה?

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

                                @dovid אמר בעריכת קוד VBA באקסל:

                                משונה, הקוד הזה רץ אצלי בלי רגע של שיהוי.

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

                                אין לי מושג איפה קבור הכלב

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

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

                                  בכל אופן תודה רבה על הרצון לסייע!!!

                                  תגובה 1 תגובה אחרונה
                                  1
                                  • searchnicksS מנותק
                                    searchnicksS מנותק
                                    searchnicks
                                    כתב ב נערך לאחרונה על ידי
                                    #21

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

                                    Sub browseFolderPath()
                                        On Error GoTo err
                                        Dim fileExplorer As FileDialog
                                        Dim answer As Integer
                                        answer = MsgBox("לאחר בחירה מחדש של התיקיית דוחות, יש להמתין מס' דקות כדי לחשב מחדש, האם אתה רוצה להמשיך?", vbYesNo + vbExclamation + vbDefaultButton2 + vbMsgBoxRtlReading)
                                    If answer = vbYes Then
                                        Set fileExplorer = Application.FileDialog(msoFileDialogFolderPicker)
                                        
                                        'To allow or disable to multi select
                                        fileExplorer.AllowMultiSelect = False
                                        
                                        With fileExplorer
                                            If .Show = -1 Then 'Any folder is selected
                                                ['גיליון5'!H1] = .SelectedItems.Item(1)
                                            Else ' else dialog is cancelled
                                                MsgBox "עליך לבחור נתיב תיקיה מתאימה"
                                            End If
                                        End With
                                    err:
                                        Exit Sub
                                    MsgBox "הנתיב שצוין הוא" & vbNewLine & vbNewLine & Range("'גיליון5'!H1").Value
                                    Else
                                        'do nothing
                                    End If
                                    End Sub
                                    תגובה 1 תגובה אחרונה
                                    1
                                    • searchnicksS מנותק
                                      searchnicksS מנותק
                                      searchnicks
                                      כתב ב נערך לאחרונה על ידי searchnicks
                                      #22
                                      פוסט זה נמחק!
                                      dovidD תגובה 1 תגובה אחרונה
                                      0
                                      • dovidD מנותק
                                        dovidD מנותק
                                        dovid ניהול
                                        השיב לsearchnicks ב נערך לאחרונה על ידי
                                        #23

                                        @מתמחה-במחשבים נושא חדש בבקשה, בקטגוריה תכנות.

                                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

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

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

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