PDA

View Full Version : وارد کردن گروهی فایل اکسل به اکسس



amiralex
دوشنبه 26 بهمن 1394, 09:33 صبح
سلام به همه

من یه فرم دارم که با زدن یک دکمه پنجره انتخاب فایل (Dialog) باز میشه و یه فایل اکسل و وارد یه جدول میکنم

سوالم اینه: با چه کدی میتونم چندین فایل اکسل و همزمان وارد همون جدول کنم؟ یعنی لازم نباشه تک تک فایل اکسل و وارد جدول اکسس کنم؟

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




Dim fd As FileDialog


Set fd = Application.FileDialog(msoFileDialogOpen)
Dim vrtSelectedItem As Variant


With fd
.ButtonName = "ÇäÊÎÇÈ"

.AllowMultiSelect = True

If .Show = -1 Then


For Each vrtSelectedItem In .SelectedItems


txtmasir.Value = vrtSelectedItem


Next vrtSelectedItem
Else
End If
End With


Set fd = Nothing


DoCmd.SetWarnings False
Dim strPath As String
Dim strSQL As String
strPath = txtmasir
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "VorodiDafater", strPath, True

amiralex
سه شنبه 27 بهمن 1394, 02:59 صبح
کسی نیست یه راهنمایی و کمک کنه؟

e601
سه شنبه 27 بهمن 1394, 08:05 صبح
سلام
شما داخل حلقه ای که فایلهای انتخاب شده رو پردازش میکنه درست عمل نکردید. txtmasir قاعدتا یک تکست باکس هست و با هر بار اجرای حلقه، مسیر فایل داخلش قرار داده میشه ولی با دور بعدی اجرای حلقه، مسیر فایل جدید جایگزین مسیر قبلی میشه. بنابراین با این وضعیت شما فقط آدرس آخرین فایل رو در تکست باکس txtmasir خواهید داشت.

شما یا باید از آرایه ها استفاده کنید، یا کدهایی که در آخر قرار دادید رو بیارید داخل حلقه. بصورت زیر:
Dim fd As FileDialog
Dim strPath As String
Dim strSQL As String
Dim vrtSelectedItem As Variant

DoCmd.SetWarnings False
Set fd = Application.FileDialog(msoFileDialogOpen)

With fd
.ButtonName = "انتخاب"
.AllowMultiSelect = True
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
strPath = vrtSelectedItem
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "VorodiDafater", strPath, True
Next vrtSelectedItem
End If
End With

Set fd = Nothing

البته من تست نکردم (چون فایل اکسل و جدول آماده نداشتم) ما چون دستور DoCmd.TransferSpreadsheet رو داخل حلقه قرار دادیم و بدلیل اینکه سرعت حلقه خیلی زیاده شاید یک اختلال کوچیکی بوجود بیاد. شما تست کنید اگر بدون مشکل انجام شد که هیچی استفاده کنید وگرنه اعلام کنید...

amiralex
سه شنبه 27 بهمن 1394, 14:29 عصر
با سلام و تشکر از جنابعلی
بسیار دقیق و درست بود.البته با یه تغییر کوچک عملکرد. ممنونم