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

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

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

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

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

    שלום
    מצאתי כאן קוד מאקרו שתכליתו לייבא רשימת קבצים הקיימים בתיקיה

    אני רוצה להוסיף לקוד שני דברים

    1. נתיב תיקיה קבועה, (כרגע הקוד פותח חלון שבו יש לנווט לבחירת תיקיה)

    2. בחירת מיקום שבו הנתונים ימוקמו

    אעריך אם מישהו יכול לעזור לי בזה

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

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

      תשנה את הc:\Program Files למה שאתה צריך, בקשר למיקום, עשיתי שייקח מיקום נוכחי.

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

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

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

        @dovid
        תודה רבה!
        עזרת לי מאד
        אם אפשר ואתה פנוי ויכול אני מבקש נתיב להצבת הנתונים כנ"ל

        בחירת מיקום בו הנתונים ימוקמו

        כך שאוכל לכתוב שיציב בגיליון2!A5
        זה חשוב לי כי אני מפעיל את המאקרו בגיליון 1 ואמור להציב בגיליון 2

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

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

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

          @dovid
          תודה רבה!
          עזרת לי מאד
          אם אפשר ואתה פנוי ויכול אני מבקש נתיב להצבת הנתונים כנ"ל

          בחירת מיקום בו הנתונים ימוקמו

          כך שאוכל לכתוב שיציב בגיליון2!A5
          זה חשוב לי כי אני מפעיל את המאקרו בגיליון 1 ואמור להציב בגיליון 2

          אתה רוצה לכתוב את הפרמטר הזה שרירותית בקוד או לקבל את זה באיזה מקום כפרמטר?

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

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

          searchnicksS תגובה 1 תגובה אחרונה
          2
          • 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

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

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

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