ورود

View Full Version : سوال: اکسپورت اطلاعات لیست به exel



michkadol
یک شنبه 18 دی 1390, 08:41 صبح
با سلام کد زیر اطلاعات یک فرم رو به اکسل اکسپورت میکنه


DoCmd.OutputTo acOutputForm, "", "MicrosoftExcelBiff8(*.xls)", "", False, "", 0


حالا باید کد رو چگونه تغییر داد تا اطلاعات فیلتر شده در یک listbox که در فرم قرار داره به اکسل اکسپورت بشه؟

mosafer1375
یک شنبه 18 دی 1390, 20:14 عصر
باسلام
من هم یه راهنمایی میخوام اونم اینکه توی فرم دستوری می خوام که بتونمباهاش یه گزارش تحت فایل اکسل از یه فرم یا کوئری بگیرم

ممنون میشم راهنمای کنید

mosafer1375
دوشنبه 19 دی 1390, 17:10 عصر
کسی نبود در این مورد یه نمونه بزاره و راهنمایی کنه
ممنون میشم یکی راهنمایی کنه
که چی جوری می تونم توی فرم یه کلید تعریف کنم که به محضی کلیک روی اون بتونم از همون فرم خروجی اکسل بگیرم
منتظرم

Abbas Amiri
دوشنبه 19 دی 1390, 19:01 عصر
برای خروجی گرفتن از فرم وارسال به اکسل می توانید از روش زیر عمل کنید

در روال Click باتن کدهای زیر را بنویسید:


Private Sub cmdExportForm2Excell_Click()
Dim strSQL As String, qdf As QueryDef
Dim sFilter As String
strSQL = Me.RecordSource
If DCount("*", "MSysObjects", "Name='qryTemp'") > 0 Then
DoCmd.DeleteObject acQuery, "qryTemp"
End If
strSQL = GetStrSQL(Me.RecordSource, Me.Filter)
Set qdf = CurrentDb.CreateQueryDef("qryTemp")
qdf.SQL = strSQL
qdf.Close
DoCmd.TransferSpreadsheet acExport, , "QryTemp", "F:\YourExcellFileName.xlsx", True ',"A1:F50"
DoCmd.DeleteObject acQuery, "qryTemp"
End Sub



کدهای زیر را دریک ماژول کپی کنید:


Public Function GetStrSQL(strRowSource As String, sFilter As String) As String
Dim str1 As String, str2 As String, k As Integer
Dim SQL_WHERE As String
If InStr(strRowSource, ";") = 0 Then strRowSource = strRowSource & ";"
If strRowSource = "" Then Exit Function
If sFilter <> "" Then
If SplitSQL(strRowSource, "WHERE") <> "" Then
str1 = SplitSQL(strRowSource, "WHERE")
str1 = str1 & "AND " & sFilter
SQL_WHERE = str1 & " "
Else
SQL_WHERE = "WHERE " & sFilter & " "
End If
End If
strRowSource = SplitSQL(strRowSource, "SELECT") & SplitSQL(strRowSource, "FROM") & _
SQL_WHERE & _
SplitSQL(strRowSource, "GROUP BY") & _
SplitSQL(strRowSource, "HAVING") & SplitSQL(strRowSource, "ORDER BY")
GetStrSQL = strRowSource
End Function

Private Function SplitSQL(ByVal strSQL As String, ByVal SQLSection As String)
Dim Sections(5) As String, k As Integer, j As Integer, s As String
Dim SectionList As Variant, tmp
SectionList = Array("FROM", "WHERE", "GROUP BY", "HAVING", "ORDER BY", ";")
j = Len(strSQL)
For k = 0 To 5
Sections(k) = GetSection(strSQL, CStr(SectionList(k)))
If Len(Sections(k)) < j Then
Else
Sections(k) = ""
End If
Next
SortStringsByLenght Sections
tmp = Sections
For k = 0 To 5
If Sections(k) <> "" Then
If k Then Sections(k) = Right(Sections(k), Len(Sections(k)) - Len(tmp(k - 1)))
If StrComp(Left(Sections(k), Len(SQLSection)), SQLSection, vbTextCompare) = 0 Then
SplitSQL = Sections(k)
Exit Function
End If
End If
Next
End Function

Private Sub SortStringsByLenght(ByRef str)
Dim k As Integer, j As Integer, tmp As String
For k = 0 To UBound(str) - 1
For j = k + 1 To UBound(str)
If Len(str(k)) > Len(str(j)) Then
tmp = str(k)
str(k) = str(j)
str(j) = tmp
End If
Next
Next
End Sub
Private Function GetSection(strSearch As String, Delemiter As String, Optional Nth As Integer = 1) As String
Dim workTb() As String, k As Integer, j As Integer
workTb = Split(strSearch, Delemiter)
k = UBound(workTb)
If k < Nth - 1 Then Exit Function
GetSection = workTb(Nth - 1)
End Function

mosafer1375
دوشنبه 19 دی 1390, 22:52 عصر
ممنون میشم یه نمونه بزارین

Abbas Amiri
دوشنبه 19 دی 1390, 23:17 عصر
نمونه ارسال اطلاعات فرم به فایل اکسل:

mosafer1375
سه شنبه 20 دی 1390, 00:07 صبح
با سلام مجدد
نمونه رو با نسخه 2003 برام بزار

Abbas Amiri
سه شنبه 20 دی 1390, 18:51 عصر
با فرمت 2003 : با ستفاده از OutputTo تمام عناصر فرم ونه فقط اطلاعات به فایل مقصد پاس می شوند

expert2219
چهارشنبه 21 دی 1390, 00:15 صبح
با سلام
من از نسخه 2003 استفاده کردم و فایلمو تو درایو " E " ذخیره کردم و توی کد هم مسیر رو تغییر دادم ولی از این خط کد ایراد میگیره

[DoCmd.TransferSpreadsheet acExport, , "QryTemp", "E:\Book1.xlsx", True ',"A1:F50"][/CODE]

Abbas Amiri
چهارشنبه 21 دی 1390, 00:46 صبح
دقت کنید پسوند فایلتان چیست ( دراینجا xlsx )با کلیک راست روی فایلتان و انتخاب Propertieis ببینید پسوندتان همین است در غیر اینصورت تغییر دهید.

expert2219
چهارشنبه 21 دی 1390, 08:16 صبح
دقت کنید پسوند فایلتان چیست ( دراینجا xlsx )با کلیک راست روی فایلتان و انتخاب Propertieis ببینید پسوندتان همین است در غیر اینصورت تغییر دهید.

پسوند چك شد ، همينه ( xlsx ) ولي بازهمون پيغام مياد

Abbas Amiri
چهارشنبه 21 دی 1390, 18:33 عصر
متن پیغام چیست؟

expert2219
پنج شنبه 22 دی 1390, 08:06 صبح
متن پیغام چیست؟


Run-time error '3274':
External table is not in the expected format.

Abbas Amiri
پنج شنبه 22 دی 1390, 19:00 عصر
فایل اکسل را خالی و آپلود کنید تا بررسی شود

abdoreza57
پنج شنبه 29 دی 1390, 17:50 عصر
سلام


خدمت تمام دوستان و جناب امیری

از آنجا که خیلی به کد نویسی وارد نیستم برای خروجی گرفتن از یک کوئری از ماکرو استفاده نمودم
مشکلی که داره اینه :
زمانی که تولبار و منوبار را غیر فعال کرده باشیم با فراخوانی کوئری این تولبار فعال میشود که مد نظرم نیست به نمونه دقت کنید اگه راه حل نوشتن کد را بگید ممنون میشم

یا علی

Abbas Amiri
پنج شنبه 29 دی 1390, 18:02 عصر
برای اکسپورت به اکسل ماکرو را به حالت زیر درآورید
81097

abdoreza57
پنج شنبه 29 دی 1390, 18:59 عصر
سلام

تو 2003 كمند excelExport را نديدم لطفا تو نمونه اصلاحش كن يا فعال كردن آرگومان را بگو
ممنون

Abbas Amiri
پنج شنبه 29 دی 1390, 21:44 عصر
نمونه فایل خودتان:

abdoreza57
جمعه 30 دی 1390, 11:55 صبح
سلام

عذر منو ببخشيد كه نتونستم منظورم را برسونم: عبارت تولبار را به جاي ديتابيس اكسس به كار بردم

ولي فايل مورد نظر تو قسمت ماكرو تغييري نكرد مگر اينكه با كليك فقط عمل نمايش دينتابيس اكسس اتفاق مي افته (يعني همون فرموني كه نمي خواهم اجرا بشه) اين در حالي است كه ميخواهم با كليك روي باتون يك خروجي اكسل از كوئري موجود بگيرم بدون اينكه نوار ديتابيس اكسس و كوئري ها به نمايش دربياد

Abbas Amiri
شنبه 01 بهمن 1390, 00:35 صبح
جهت منظور شما ماکرو را بصورت زیر درآورید

81183
http://barnamenevis.org/images/misc/pencil.png

abdoreza57
چهارشنبه 05 بهمن 1390, 05:15 صبح
سلام
اينکه شد همون نمونه خودم!!!
چون با اينكار دسترسي به جداول و...ممكن ميشه كه مطلوب نيست

ahmad793
جمعه 07 بهمن 1390, 23:33 عصر
نمونه ارسال اطلاعات فرم به فایل اکسل:

فایلت با چه برنامه ای خونده میشه؟