ورود

View Full Version : سوال: روش ایمپورت محدودی خاص فایل های اکسل در اکسس



linktaz
دوشنبه 19 اسفند 1398, 15:12 عصر
سلام
وقت اساتید و دیگر دوستان بخیر
من یک فولدر دارم که توش فایل های اکسل قرار داده میشه.با توجه به اینکه ممکنه تعداد اونها به 40تا 50 عدد هم برسه امکان چک نمودن بصورت یکجا وجود نداره،تو فکرم اومد که از یک روشی همشو یه جا ایمپورت کنم تو اکسس و چکشون کنم.

1-به نظرتون راه بهتری وجود داره واسه چک کلی شون؟
2-اطلاعات زیادی در فایل ها میباشد که فقط تعدادیشون (اونایی که تو فایل اکسس هست) مورد استفاده بنده میباشد،آیا راهی دارد که بشه فقط قسمتی از اطلاعات رو ایمپورت کرد؟
3-روش ایمپورت اطلاعات رو هم اگر آموزشی باشه یا فایلی موجود باشه ممنون میشم بذارید.

linktaz
دوشنبه 19 اسفند 1398, 15:14 عصر
سلام
وقت اساتید و دیگر دوستان بخیر
من یک فولدر دارم که توش فایل های اکسل قرار داده میشه.با توجه به اینکه ممکنه تعداد اونها به 40تا 50 عدد هم برسه امکان چک نمودن بصورت یکجا وجود نداره،تو فکرم اومد که از یک روشی همشو یه جا ایمپورت کنم تو اکسس و چکشون کنم.

1-به نظرتون راه بهتری وجود داره واسه چک کلی شون؟
2-اطلاعات زیادی در فایل ها میباشد که فقط تعدادیشون (اونایی که تو فایل اکسس هست) مورد استفاده بنده میباشد،آیا راهی دارد که بشه فقط قسمتی از اطلاعات رو ایمپورت کرد؟
3-روش ایمپورت اطلاعات رو هم اگر آموزشی باشه یا فایلی موجود باشه ممنون میشم بذارید.

فایل ضمیمه

linktaz
چهارشنبه 21 اسفند 1398, 11:38 صبح
اساتید راهنمایی میفرمایند؟

mazoolagh
چهارشنبه 21 اسفند 1398, 15:57 عصر
فکر کنم قبلا تمام مباحث مربوط به این کار (خواندن/ایمپورت دسته ای، انتخاب یک سری سلول خاص، ...) بحث شده، هرچند که ممکنه پراکنده و گسسته بوده باشه.
یک نمونه میگذارم براتون.

mazoolagh
شنبه 24 اسفند 1398, 08:58 صبح
من یک نگاهی به فایل های اکسل نمونه انداختم:

1- با توجه به ساختارش معمولا از دو جدول مرتبط باید استفاده بشه؛
یک جدول اصلی (فرضا stacks) برای اطلاعاتی نظیر: شماره استک، تاریخ و ساعت، ... (و اسم فایل بعنوان کلید) که در بخش شبیه header/footer آوردین
یک جدول مرتبط (فرضا coils) برای : شماره کویل، سازنده، ... که در بدنه هست (و شماره ردیف دارن) و البته کلید ارتباط (اسم فایل)

2- البته میتونین از یک جدول coils هم استفاده کنین و دیتا جدول stacks رو برای هر رکورد اون تکرار کنین.

هر دو روش درست هست فقط در روش اول جدول ها رو join و در روش دوم روی جدول group اعمال میکنین.

mazoolagh
شنبه 24 اسفند 1398, 09:06 صبح
مسئله اصلی این هست که شما مستقیم نمیتونین این فایل ها رو به اکسس ایمپورت کنید و نیازمند کدنویسی هست.
البته کدش ساده است در حدی که نیاز به نمونه هم نیست،
من نکات اصلی رو میگم و شما رو راهنمایی میکنم تا خودتون بنویسید.

1- برای دادن مسیر فایلهای اکسل میتونین اونها رو در یک فولدر ثابت بریزین یا اینکه folderdialog بگذارین (که بهتر هست)
از این بخش میگذریم چون نکته ای نداره و نمونه هم براش در همین انجمن هست.

2- مرحله بعد ساختن یک حلقه است که اسم تمام فایلهای اکسل فولدر رو یکی یکی بیرون بکشه.
این بخش رو هم میگذریم چون یک dir ساده نیاز داره و باز هم نمونه داریم براش.

mazoolagh
شنبه 24 اسفند 1398, 09:23 صبح
3- قبل از حلقه مرحله 2، دو یا یک رکوردست (با توجه به دو پست قبل) برای نوشتن دیتا باز میکنیم.
داخل حلقه کافی هست که فایل اکسل رو بخونیم و اطلاعات سلول ها رو بیرون بکشیم و در رکوردست(ها) بریزیم.

برای اینکه کد زیر رو بنویسیم لازم هست رفرنس اکسل رو معرفی کرده باشیم!

151460

mazoolagh
شنبه 24 اسفند 1398, 09:26 صبح
dim stacks , coils as recordset
set stacks=currentdb.openrecordset("stacks")
set coils=...
dim app as new excel.application
app.workbooks.open "excel file path"

mazoolagh
شنبه 24 اسفند 1398, 09:39 صبح
گویا دیتا کویل ها همیشه از سطر 5 شروع میشه،
اگر مثل همین دو فایل اکسل نمونه همیشه هم فقط 5 رکورد داریم که حلقه رو برای این 5 رکورد مینویسیم.
ولی اگر تعداد نامشخص هست از سطر 5 شروع میکنیم تا زمانی که سلول ردیف خالی باشه (ستون A)

dim row as integer
with app.worksheets(1)
stacks.addnew
stacks!stack_no= .cells(2,"I")
...
stacks.update
row=5
do while .cells(row,"A") <> ""
coils.addnew
coils!row= .cells(row,"A")
coils!coil= .cells(row,"B")
...
coils.update
row=row+1
loop
end with

mazoolagh
شنبه 24 اسفند 1398, 09:41 صبح
در پایان هم یادمون هست که همه object ها رو dispose کنیم!

stacks.close
set stacks=nothing

app.quit

mazoolagh
شنبه 24 اسفند 1398, 09:48 صبح
یک مورد دیگه هست:

درسته که در حالت عادی نمیشه فایل اکسل شبیه به اینها رو (که ساختار جدولی ندارن) مستقیم با ابزار خود اکسس ایمپورت یا لینک کرد،
ولی اگر برای بخشی که اطلاعات کویل ها رو دارن (از A4 تا M9 یا A5 تا M9) اسم بگذاریم موقع ایمپورت یا لینک میتونیم اون اسم رو مشخص کنیم و فقط همین بخش خونده میشه.

linktaz
شنبه 24 اسفند 1398, 11:19 صبح
ممنون از راهنمایی کاملتون