افزودن محتوای سلولی از یک فایل به سلولی در یک فایل دیگر

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • yaalimadad115
    • 2018/12/15
    • 2
    • 30.00

    پرسش افزودن محتوای سلولی از یک فایل به سلولی در یک فایل دیگر

    با سلام.
    تصور کنید ۱۰۱ فایل اکسل داریم که قرار است اطلاعاتی از ۱۰۰ فایل را در یک فایل باقیمانده که فایل مدیریت است ذخیره کنیم. در فایل مدیریت، در یک ستون، نام تمامی ۱۰۰ فایل را نوشته‌ایم. قرار است در ستون دیگری از این فایل، در سلول مقابل نام هر یک از این ۱۰۰ فایل، محتوای سلول c10 از تب e2 آن فایل جای‌گذاری شود. برای صرفه‌جویی در زمان و پیشبرد کار با سرعت بیشتر، می‌خواهیم در فایل مدیریت، در سلول مورد نظر، دستوری بنویسیم که طبق آن، نام فایل مورد نظر را از سلول مقابل خود برداشته، محتوای موجود در سلول c10 از تب e2 از فایلی که نامش را از سلول مقابل برداشته، در این سلول جای‌گذاری کند. آیا این کار امکان‌پذیر است یا باید به صورت تک‌تک، روی سلول کلیک کرده و با قرار دادن مساوی و کلیک روی سلول مورد نظر در فایل دوم، محتوا را جایگذاری کنیم؟ در صورتی که راه اول امکان‌پذیر است، لطفا نحوه وارد کردن دستور را بفرمایید.
    متشکرم
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    سلام دوست عزيز
    شما براي اينكار دو روش ميتونين استفاده كنيد. يكي استفاده از تابع indirect و يكي استفاده از كدنويسي vba

    در روش اول شما نياز داريد بعد از نوشتن فرمول يك بار همه اون 100 فايل رو باز كنيد تا اكسل بتونه اطلاعات رو از اون فايل ها بخونه. (با هر بار باز كردن فايل مرجع بايد همه فايل ها مجددا باز بشه)
    در روش دوم كد vba اين كار رو براتون انجام ميده و هر دفعه صد تا فايل رو باز ميكنه و مقدار مورد نظر رو بر ميداره و فايل رو ميبنده كه خب البته يكم زمان بر هست و احتياج به سيستم با cpu و ram بالا داره

    کامنت

    • yaalimadad115
      • 2018/12/15
      • 2
      • 30.00

      #3
      تشکر بابت راهنماییتان جناب قاسمیان.
      جسارت بنده را ببخشید، اما امکان دارد در مورد دو فایل زیر، با استفاده از کد vba دستور را برام وارد کنید؟ البته این فایلها تنها برای درک موضوع هستند و کاربرد اصلی ندارند.
      سپاس فراوان از لطفتان
      نوشته اصلی توسط Amir Ghasemiyan
      سلام دوست عزيز
      شما براي اينكار دو روش ميتونين استفاده كنيد. يكي استفاده از تابع indirect و يكي استفاده از كدنويسي vba

      در روش اول شما نياز داريد بعد از نوشتن فرمول يك بار همه اون 100 فايل رو باز كنيد تا اكسل بتونه اطلاعات رو از اون فايل ها بخونه. (با هر بار باز كردن فايل مرجع بايد همه فايل ها مجددا باز بشه)
      در روش دوم كد vba اين كار رو براتون انجام ميده و هر دفعه صد تا فايل رو باز ميكنه و مقدار مورد نظر رو بر ميداره و فايل رو ميبنده كه خب البته يكم زمان بر هست و احتياج به سيستم با cpu و ram بالا داره
      فایل های پیوست شده

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        کد:
        Sub EI_GetInfoFromFiles()
        Dim r As Range
        Application.ScreenUpdating = False
        Lrow = Range("B" & Rows.Count).End(xlUp).Row
        Set Rng = Range("B2:B" & Lrow)
        Path = ActiveWorkbook.Path
        Name = ActiveWorkbook.Name
        For Each r In Rng
            Workbooks.Open Path + [COLOR=#FF0000]"\files\"خدمت شما دوست عزيز
        
         + r.Value
            myVal = Sheets("E2").Range("B9").Value
            ActiveWorkbook.Close
            r.Offset(, 1) = myVal
        Next
        Application.ScreenUpdating = True
        End Sub
        فقط نكته اي كه در اين كد هست اينه كه من همه فايل هايي كه قراره از آنها اطلاعات استخراج بشه در پوشه اي به نام files در كنار فايل master قرار دادم. غير از اين مورد شما نياز به تغيير ديگه اي نداريد. به هر تعداد اسم در ستون B بخواهيد ميتونيد اضافه كنيد. فقط دقت كنيد كه نام ها معتبر باشند و فايل ها شيت E2 رو داشته باشند.

        [/COLOR]

        کامنت

        چند لحظه..