انجام عملیات بر روی تمام فایل ها داخل یک پوشه

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • sanjesh_88

    • 2017/01/02
    • 48

    انجام عملیات بر روی تمام فایل ها داخل یک پوشه

    سلام
    من چند روز است درگیر یک پروژه ای شدم و در قسمت اکسل آن کمی دچار مشکل شدم و البته به لطف بچه های این سایت تا حدود زیادی مشکلاتم برطرف شده است
    به طور خلاصه بنده تعدادی زیادی فایل ااکسل دارم که این فایل ها از نرم افزار گرفته می شود و هر روز آپدیت می شود و یک سطری به آن اضافه می شود. بنده چکیده ای از این فایل ها مثل کمترین مقدار و بیشترین مقدار در یک بازه زمانی را باید بگیرم و دریک فایلی به عنوان مثال فایل natayej ذخیره کنم که تا اینجا کار به لطف بچه های این سایت انجام شده است.اما دو تا مشکل اساسی وجود دارد
    1- سلول ها به با فرمت text ذخیره می شوند و نمی توان روی آن عملیات انجام داد که دیروز یکی از بچه ها کد زیر را معرفی کرد
    sub test()
    for
    each cell in activesheet.usedrange
    cell
    .formula = cell.value
    next
    end sub

    ولی این کد برای یک فایل انجام می دهد و اگر بخواهم صد تا فایل را یک به یک تبدیل به نامبر کنم وقت می گیرد . اگر بشه یک کدی در فایل natayej نوشت که تمام فایل های اکسل داخل پوشه را به یکباره از حالت text تبدیل به number کند خیلی عالی می شود

    2-مشکل دوم بدین صورت است که برای اینکه مثلا نتایج فایل 1 در فایل natayej نشان داده شود فایل 1 باید حتما باز باشد وگرنه نتایج نشان داده نمی شود و به صورت #VALUE! نشان داده می شود آیا راهی وجود داره که در حالی که فایل 1 بسته است نتایج در فایل شماره natayej نشان داده شود.
    اگر لطف کمک کنید ممون می شوم
    فایل های پیوست شده
  • sanjesh_88

    • 2017/01/02
    • 48

    #2
    من خودم یک کدی نوشتم ولی این کد یک ایرادی دارد و اون این است که فایل ها باید باز شوند و بسته شوند . کسی نمی دونه که آیا بدون باز شدن فایل میشه این تغییرات را ایجاد کرد یا نه ؟

    Sub test()
    Dim MyPath As String
    Dim MyFile As String
    Dim Wkb As Workbook

    Dim count As Integer
    Dim l As Integer
    Dim FileCountA As Long
    Dim path As String
    path = "C:\Users\esmaeil\Desktop\sajesh"
    Dim strTemp As String
    Dim lngCount As Long
    strTemp = Dir(path & "*.xls")
    Do While strTemp <> ""
    lngCount = lngCount + 1
    strTemp = Dir
    Loop
    FileCountA = lngCount
    Application.ScreenUpdating = False

    MyPath = "C:\Users\esmaeil\Desktop\sajesh" 'change the path accordingly

    If Right(MyPath, 1) <> "" Then MyPath = MyPath & ""

    MyFile = Dir(MyPath & "*.xls")

    For l = 1 To FileCountA

    Set Wkb = Workbooks.Open(MyPath & MyFile)

    Range("a:a").Formula = Cells.Value


    Wkb.Close savechanges:=True
    MyFile = Dir
    Next

    Application.ScreenUpdating = True

    End Sub

    کسی در مورد سوال دومم راه حلی نداشت (مشکل دوم بدین صورت است که برای اینکه مثلا نتایج فایل 1 در فایل natayej نشان داده شود فایل 1 باید حتما باز باشد وگرنه نتایج نشان داده نمی شود و به صورت #VALUE! نشان داده می شود آیا راهی وجود داره که در حالی که فایل 1 بسته است نتایج در فایل شماره natayej نشان داده شود.
    اگر لطف کمک کنید ممون می شوم)

    کامنت

    چند لحظه..