PDA

View Full Version : ایمپورت اطلاعات اکسل به یک فرم خاص در اکسس با کدنویسی



nima_703
پنج شنبه 21 مهر 1401, 11:36 صبح
سلام به همه دوستان
من پست های دوستان رو دیدم ولی اون چیزی که من می خواستم رو بهش نرسیدم
من یک نمونه فایل میذارم لطف کنید وقت بذارید و اونو ببینید داخل فرم t1 من یک دکمه دارم به اسم (ایمپورت اطلاعات از اکسل)
من میخوام وقتی که روی این دکمه کلیک کنم به مای کامپیوتر سیستمم وصل بشه و از من یک فایل با پسوند اکسل بخواد و من فایل رو انتخاب کنم (فایل نمونه اکسل هم گذاشتم) و اون فایل اکسل منو به صورت اتوماتیک ایمپورت کنم داخل فرم خودم
ممنون میشم اگه اون کد رو داخل فایل نمونه خودم کپی کنید و یا اون کد رو برام بنوسید داخل این پست
دوستان لطفا ارجاع ندین به پست های دوستان دیگه

eb_1345
پنج شنبه 21 مهر 1401, 20:18 عصر
سلام به همه دوستان
من پست های دوستان رو دیدم ولی اون چیزی که من می خواستم رو بهش نرسیدم
من یک نمونه فایل میذارم لطف کنید وقت بذارید و اونو ببینید داخل فرم t1 من یک دکمه دارم به اسم (ایمپورت اطلاعات از اکسل)
من میخوام وقتی که روی این دکمه کلیک کنم به مای کامپیوتر سیستمم وصل بشه و از من یک فایل با پسوند اکسل بخواد و من فایل رو انتخاب کنم (فایل نمونه اکسل هم گذاشتم) و اون فایل اکسل منو به صورت اتوماتیک ایمپورت کنم داخل فرم خودم
ممنون میشم اگه اون کد رو داخل فایل نمونه خودم کپی کنید و یا اون کد رو برام بنوسید داخل این پست
دوستان لطفا ارجاع ندین به پست های دوستان دیگه


سلام
نمونه اصلاح شده رو بررسی بفرما !

nima_703
جمعه 22 مهر 1401, 00:00 صبح
سلام
نمونه اصلاح شده رو بررسی بفرما !

سلام دم شما گرم دوست عزیز
این عالیه فقط یه مشکل داره اینه که جدول رو اضافه میکنه ولی اسامی که از قبل داخل جدول و فرم من هستند رو حذف میکنه من میخوام اون اسامی ها هم باقی بمونن و اگه اسامی تکراری هم وارد بشه قبول کنه (من یکبار یک فایل رو ایمپورت می کنم قبول میکنه با دوم که دوباره فایل دیگه ای رو میخوام ایمپورت کنم ارور میده)
و در آخر اینکه اگه اون فایل اکسل که میخوام ایمپورت کنم اسمش t1 نباشه (مثلا t5 باشه ) موقع ایمپورت کردن ارور نده. من می خوام اسمش هر چیزی باشه و در هر مسیری از کامپیوتر باشه اون فایل اکسل رو به فرم من اضافه کنه
ممنون میشم راهنمایی کنی

eb_1345
جمعه 22 مهر 1401, 05:37 صبح
سلام دم شما گرم دوست عزیز
این عالیه فقط یه مشکل داره اینه که جدول رو اضافه میکنه ولی اسامی که از قبل داخل جدول و فرم من هستند رو حذف میکنه من میخوام اون اسامی ها هم باقی بمونن و اگه اسامی تکراری هم وارد بشه قبول کنه (من یکبار یک فایل رو ایمپورت می کنم قبول میکنه با دوم که دوباره فایل دیگه ای رو میخوام ایمپورت کنم ارور میده)
و در آخر اینکه اگه اون فایل اکسل که میخوام ایمپورت کنم اسمش t1 نباشه (مثلا t5 باشه ) موقع ایمپورت کردن ارور نده. من می خوام اسمش هر چیزی باشه و در هر مسیری از کامپیوتر باشه اون فایل اکسل رو به فرم من اضافه کنه
ممنون میشم راهنمایی کنی


سلام
من فکر کردم که شما میخواهی هر بار که اطلاعات فایل اکسل رو ایمپورت می کنی اطلاعات قبلی حذف بشه بخاط همین کد DoCmd.RunSQL "DELETE FROM t1" قبل از دستور ایمپورت اضافه کردم . اگه میخواهی اطلاعات قبلی حفظ بشه این کد رو حذف کن.



Dim f As Object
Dim strFile As String
Dim varItem As Variant
Set f = Application.FileDialog(3)
If f.Show Then
For Each varItem In f.SelectedItems
strFile = Dir(varItem)
Next
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "t1", strFile, True
Me.Requery
MsgBox "ÇØáÇÚÇÊ ÇÒ ÝÇíá ǘÓá ÏÑíÇÝÊ ÔÏ"
End If

ضمناً چون فیلد ID در جدول از نوع اتونامبر است در فایل اکسل این ستون رو حذف کن چون شماره های اون ستون به فیلد ID اضافه نمیشن
در خصوص نام اکسل هم که اشاره کردی فرقی نمی کنه هر نامی داشته باشه اطلاعات ایمپورت میشه . در کد مربوط به دستور ایمپورت t1 نام جدول شماست و اگه جدول شما نام دیگه داره اون نام رو جایگزینt1 کن و strFile هم نام فایل اکسل میباشه که میتونه شامل هر نامی باشه
دستور ایمپورت:


DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TableName", strFile, True



سعی کردم بخاطر اینکه با کد نویسی زیاد آشنائی نداری کدها رو خیلی خلاصه تر کنم و گرنه اگه بخواهی حرفه ای تر عمل کنی کد نویسی هم قدری پیچیده تر میشه
یا علی

nima_703
جمعه 22 مهر 1401, 11:42 صبح
سلام
من فکر کردم که شما میخواهی هر بار که اطلاعات فایل اکسل رو ایمپورت می کنی اطلاعات قبلی حذف بشه بخاط همین کد DoCmd.RunSQL "DELETE FROM t1" قبل از دستور ایمپورت اضافه کردم . اگه میخواهی اطلاعات قبلی حفظ بشه این کد رو حذف کن.



Dim f As Object
Dim strFile As String
Dim varItem As Variant
Set f = Application.FileDialog(3)
If f.Show Then
For Each varItem In f.SelectedItems
strFile = Dir(varItem)
Next
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "t1", strFile, True
Me.Requery
MsgBox "ÇØáÇÚÇÊ ÇÒ ÝÇíá ǘÓá ÏÑíÇÝÊ ÔÏ"
End If

ضمناً چون فیلد ID در جدول از نوع اتونامبر است در فایل اکسل این ستون رو حذف کن چون شماره های اون ستون به فیلد ID اضافه نمیشن
در خصوص نام اکسل هم که اشاره کردی فرقی نمی کنه هر نامی داشته باشه اطلاعات ایمپورت میشه . در کد مربوط به دستور ایمپورت t1 نام جدول شماست و اگه جدول شما نام دیگه داره اون نام رو جایگزینt1 کن و strFile هم نام فایل اکسل میباشه که میتونه شامل هر نامی باشه
دستور ایمپورت:


DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TableName", strFile, True



سعی کردم بخاطر اینکه با کد نویسی زیاد آشنائی نداری کدها رو خیلی خلاصه تر کنم و گرنه اگه بخواهی حرفه ای تر عمل کنی کد نویسی هم قدری پیچیده تر میشه
یا علی

سلام مجدد
دوست عزیز من طبق دستور شما فیلد ID در جدول که از نوع اتونامبر هست رو حذف کردم و یک خروجی از اون گرفتم حالا که میخوام دوباره اطلاعات ایمپورت کنم ارور میده (حتی اسم فایل اکسل هم فکر کنم باید t1 باشه ) اگه اسم دیگه ای باشه کار نمیکنه من عکس ارور رو گرفتم براتون به پیوست میذارم با فایلی که خودتون آپلود کردین من تغییر دادم خودتون اجرا کنید تا متوجه بشین مشکلش چیه
اگه زحمتی نیست به صورت حرفه ای تر اگه وقت دارین این کدنویسی رو برام کامل تر کنید یه دنیا ممنونت میشم

atf1379
جمعه 22 مهر 1401, 14:00 عصر
سلام مجدد
دوست عزیز من طبق دستور شما فیلد ID در جدول که از نوع اتونامبر هست رو حذف کردم و یک خروجی از اون گرفتم حالا که میخوام دوباره اطلاعات ایمپورت کنم ارور میده (حتی اسم فایل اکسل هم فکر کنم باید t1 باشه ) اگه اسم دیگه ای باشه کار نمیکنه من عکس ارور رو گرفتم براتون به پیوست میذارم با فایلی که خودتون آپلود کردین من تغییر دادم خودتون اجرا کنید تا متوجه بشین مشکلش چیه
اگه زحمتی نیست به صورت حرفه ای تر اگه وقت دارین این کدنویسی رو برام کامل تر کنید یه دنیا ممنونت میشم


سلام
نمونه پست 4 بدرستی کار میکنه .
یک اسکرین شات از خطائی که صادر میشه بگیر تا بررسی بشه علت خطا چیه

nima_703
جمعه 22 مهر 1401, 15:12 عصر
سلام
نمونه پست 4 بدرستی کار میکنه .
یک اسکرین شات از خطائی که صادر میشه بگیر تا بررسی بشه علت خطا چیه

سلام دقیقا این کد ارور میداد


DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "t1", strFile, True


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

من اگه بخوام اطلاعات رو از فایل اکسل و ورد دریافت کنم چه کدی رو باید وارد کنم به جای کد بالا؟

atf1379
جمعه 22 مهر 1401, 15:19 عصر
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "t1", strFile, True



من اگه بخوام اطلاعات رو از فایل اکسل و ورد دریافت کنم چه کدی رو باید وارد کنم به جای کد بالا؟

دوست عزیز ببخشی ! این چه سوالیه ؟شما با این کد اطلاعات رو از فایل اکسل می گیری دیگه .

eb_1345
جمعه 22 مهر 1401, 16:49 عصر
سلام دقیقا این کد ارور میداد


DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "t1", strFile, True





کدهای زیر رو جایگزین کدهای قبلی کن !


Private Sub Command18_Click()
Dim strFile As String
Dim StrFullName As String
Dim f As Object
Dim strFolder As String
Dim varItem As Variant
Set f = Application.FileDialog(3)
With f
.Title = "Select the Excel file to import"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsx", 1
.Filters.Add "All Files", "*.*", 2
If f.Show Then
For Each varItem In f.SelectedItems
strFile = Dir(varItem)
strFolder = Left(varItem, Len(varItem) - Len(strFile))
StrFullName = strFolder & strFile
Next
End If
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "t1", StrFullName, True
Me.Requery
MsgBox "ÇØáÇÚÇÊ ÇÒ ÝÇíá ǘÓá ÏÑíÇÝÊ ÔÏ"
End With
Set f = Nothing
End Sub


در نمونه قبلی من سهواً در دستور ایمپورت از نام فایل اکسل استفاده کرده بودم در صورتیکه باید آدرس کامل فایل اکسل درج بشه

eb_1345
جمعه 22 مهر 1401, 16:56 عصر
از نمونه زیر هم در حالتی که نخواهید ستون اول فایل اکسل رو حذف کنی استفاده کن!

nima_703
جمعه 22 مهر 1401, 19:42 عصر
از نمونه زیر هم در حالتی که نخواهید ستون اول فایل اکسل رو حذف کنی استفاده کن!
سلام دم شما گرم این عالیه
فقط وقتی دکمه ایمپورت رو می زنم و صفحه بارگذاری که میاد اگه کنسل کنم ارور زیر که تصویرش رو میذارم میاد اینو چیکار کنم نشون نده؟
بعد اگه من بخوام یک خروجی word از فرم خودم بگیرم و اون فایل word رو با مشخصات جدید ی که وارد می کنم داخل اون به فرم خودم تزریق کنم باید چیکار کنم ؟ (یعنی همین کاری که انجام دادین رو به صورت word بتونم به جدول ایمپورت کنم)
به همین شکل آخری که فیلد ID از نوع اتونامبر داره
بزرگی کن اینو هم بهم بگو

eb_1345
جمعه 22 مهر 1401, 21:12 عصر
فقط وقتی دکمه ایمپورت رو می زنم و صفحه بارگذاری که میاد اگه کنسل کنم ارور زیر که تصویرش رو میذارم میاد اینو چیکار کنم نشون نده؟


بعد از کد Call GetFileName یک خط کد زیرو رو اضافه کن !


If IsNull(StrFullName) Or StrFullName = "" Then Exit Sub

ضمناً برای خروجی گرفتن بصورت ورد و ایمپورت اون به داخل اکسس کد نویسی زیادی میخواد که متاسفانه فرصتشو ندارم .

nima_703
شنبه 23 مهر 1401, 00:10 صبح
دوست عزیز ببخشی ! این چه سوالیه ؟شما با این کد اطلاعات رو از فایل اکسل می گیری دیگه .

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

nima_703
شنبه 23 مهر 1401, 00:14 صبح
بعد از کد Call GetFileName یک خط کد زیرو رو اضافه کن !


If IsNull(StrFullName) Or StrFullName = "" Then Exit Sub

ضمناً برای خروجی گرفتن بصورت ورد و ایمپورت اون به داخل اکسس کد نویسی زیادی میخواد که متاسفانه فرصتشو ندارم .

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

nima_703
شنبه 23 مهر 1401, 16:25 عصر
بعد از کد Call GetFileName یک خط کد زیرو رو اضافه کن !


If IsNull(StrFullName) Or StrFullName = "" Then Exit Sub

ضمناً برای خروجی گرفتن بصورت ورد و ایمپورت اون به داخل اکسس کد نویسی زیادی میخواد که متاسفانه فرصتشو ندارم .

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