PDA

View Full Version : import



انگوران
چهارشنبه 12 اسفند 1388, 15:00 عصر
دوستان سلام - براي ايمپورت اطلاعات فايل اكسل به داخل اكسس فقط يكي از شيتها قابل انتقال هست . آيا روشي وجود داره تا كليه شيتهاي فايل اكسل يكباره در يه ايمپورت بشه ؟ با سپاس

mazoolagh
شنبه 15 اسفند 1388, 12:17 عصر
چون هر شیت به یک جدول منتقل میشه در هر بار فقط یک شیت قابل انتقال هست
با کدنویسی این امکان هست که اسم شیت رو مشخص کنین

انگوران
شنبه 15 اسفند 1388, 12:22 عصر
ضمن تشكر اگه زحمت كد و نمونه كشيده بشه ممنون ميشم .

mazoolagh
شنبه 15 اسفند 1388, 12:46 عصر
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "table_name", "excel_filename", , "sheet_name!range"


منظور از range هم انتخاب سطرها و ستونها است مثل a1:z1000
برای هر شیت یک جدول جدا بعبارت دیگه بتعداد شیت ها باید دستور اجرا بشه و برای هر شیت هم یک اسم جدول جداگانه باید بدین

انگوران
شنبه 15 اسفند 1388, 16:31 عصر
ضمن تشكر لطفاً بفرمائيد 1- مسير فايل اكسل ( غير از مسير پيش فرض ) رو چطوري مشخص كنيم .
2- با كدي شبيه كد زير ميشه تعداد شيتها رو مشخص كرد و يكباره كليه شيتها رو ايمپورت نمود .

for i=1 to 3
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "table_name", "excel_filename", , "sheet(i)!range"
next

mazoolagh
یک شنبه 16 اسفند 1388, 10:32 صبح
1- مسیر فایل اکسل رو کامل بدین

D:\DATA\1388\SALES.XLSX2- اسم شیت باید خودش و بصورت استرینگ باشه و نمیشه بهش رفرنس داد (در حد اطلاعات من) بعبارت دیگه باید اسم شیتها رو دقیق بدونین.
ولی شما میتونین یک کار دیگه بکنین به اینصورت که یک ARRAY تعریف کنین که شامل اسامی واقعی شیت ها باشه:


DIM SHEET_NAMES(),TABLE_NAMES()
SHEET_NAMES=ARRAY("SHEET1","FOROOSH BAHAR","SHEET4")
TABLE_NAMES=ARRAY("SALES77","SALES_SPRING","PERS")
DIM FILE_LOCATION AS STRIN
FILE_LOCATION="D:\DATA\1388\SALES.XLSX"
DIM I AS INTEGER
FOR I=0 TO UBOUND(SHEET_NAMES)
DoCmd.TransferSpreadsheet acImport, _
acSpreadsheetTypeExcel12, _
TABLE_NAMES(I), _
FILE_LOCATION, , _
SHEET_NAMES(I) & "!A1:Z10000"
NEXT

انگوران
یک شنبه 16 اسفند 1388, 11:43 صبح
باز هم از وقتي كه گذاشتين و راهنمائي شما ممنونم و يه سوال ديگه اينكه امكان اين هست كه range هاي مختلف رو ايمپورت كنيم مثلا" a1:a4;d1:d4

mazoolagh
دوشنبه 17 اسفند 1388, 13:46 عصر
این رو نمیدونم و تابحال هم تست نکردم
خودتون تست کردین؟

انگوران
دوشنبه 17 اسفند 1388, 18:44 عصر
آره متاسفانه جواب نداد شايد از كاركترهاي مناسب استفاده نكردم . در هر صورت منتظر عنايت اساتيد هستيم و مجدد از جنابعالي تشكر مي كنم .

mazoolagh
سه شنبه 18 اسفند 1388, 16:38 عصر
بطور حسی فکر نکنم خواسته شما عملی باشه (بخاطر اینکه در ساخت جدول مشکل پیش میاد)
چرا برای هر رنج یک ایمپورت جداگانه انجام نمیدین؟

انگوران
سه شنبه 18 اسفند 1388, 17:26 عصر
باز هم از لطف شما ممنونم . البته به شكلهاي مختلف ميشه به جواب رسيد ولي دنبال راحتترين روش هستم .
در خصوص ايمپورت رنجهاي مختلف هم فرض كنيد مي خوام a1:a10 در فيلد اول و b1:b10 در فيلد دوم قرار بگيره با ايمپورت ( روشي كه تا كنون بررسي ) اطلاعات هر دو ستون در فيلد اول قرار مي گيره . با سپاس مجدد