PDA

View Full Version : خروجی اکسل سفارشی



parsa70
دوشنبه 19 آبان 1399, 22:41 عصر
سلام

من با این کد از ساب فرم و فرم اصلی خروجی اکسل میگیرفتم که
البته بعضی از اعداد رو به صورت علامت سوال نشون میداد
(البته این کد خروجی اکسلی که میداد تمیز بود مثلا: قسمت تیتر رو رنگی میکرد و فاصله ستون خیلی مناسب بود)


On Error GoTo Image20_Click_Err
Me.FullSearchtasksub.SetFocus


DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy
Dim xlapp As Object
Set xlapp = CreateObject("Excel.Application")
With xlapp
.Workbooks.add
.ActiveSheet.PasteSpecial Format:="biff5", Link:=False, DisplayAsIcon:=False






.cells.Select
.cells.EntireColumn.AutoFit
.Visible = True
.range("a1").Select




End With
Image20_Click_Exit:
Exit Sub
Image20_Click_Err:
MsgBox Error$
Resume Image20_Click_Exit
End Sub


به کمک جناب
padide55 (https://barnamenevis.org/member.php?263869-padide55)


قسمتی از کد نویسی رو اینجوری تغییر دادم


.ActiveSheet.PasteSpecial Format:="Unicode text", Link:=False, DisplayAsIcon:=False


که مشکل علامت سوال اعداد خوشبختانه رفع شده ولی فایل اکسلی که خروجی میده خیلی اندازه ستون‌ها زیاد هست با اینکه متن داخلشون کمه.
میخواستم ببینم کلاً میشه تو کد نویسی یک تغییراتی داد مثلا: بگیم فونت نازنین باشه و justify و اندازه ستون‌ها طبیعی باشه و کلاً سفارشی باشه؟؟
سپاس

padide55
دوشنبه 19 آبان 1399, 23:18 عصر
"GeneralReportWithComments_Pmcs
این فرمت رو هم تست کنید

parsa70
سه شنبه 20 آبان 1399, 00:05 صبح
"GeneralReportWithComments_Pmcs
این فرمت رو هم تست کنید

این خیلی بهتره ممنون

sadegh1944
سه شنبه 20 آبان 1399, 00:13 صبح
این هم یک نمونه برای خروجی اکسل، به همراه ایجاد پوشه، بجای "qry_name" نام کوئری خودتون رو قرار بدهید


Private Sub cmdExcel_Click()
On Error GoTo Err_cmdExcel_Click

Dim strExcelPath As String
Dim strExcelFile As String

strExcelPath = Application.CurrentProject.Path & "\Excel_Out"
strExcelFile = strExcelPath & "\excel_out.xlsx"

If Len(Dir(strExcelPath & "", vbDirectory)) = 0 Then
MkDir strExcelPath
End If

DoCmd.OutputTo acOutputQuery, "qry_name", acFormatXLSX, strExcelFile, True, "", 0

Exit_cmdExcel_Click:
Exit Sub

Err_cmdExcel_Click:
MsgBox err.Description
Resume Exit_cmdExcel_Click

End Sub

parsa70
سه شنبه 20 آبان 1399, 08:35 صبح
152421
این هم یک نمونه برای خروجی اکسل، به همراه ایجاد پوشه، بجای "qry_name" نام کوئری خودتون رو قرار بدهید


Private Sub cmdExcel_Click()
On Error GoTo Err_cmdExcel_Click

Dim strExcelPath As String
Dim strExcelFile As String

strExcelPath = Application.CurrentProject.Path & "\Excel_Out"
strExcelFile = strExcelPath & "\excel_out.xlsx"

If Len(Dir(strExcelPath & "", vbDirectory)) = 0 Then
MkDir strExcelPath
End If

DoCmd.OutputTo acOutputQuery, "qry_name", acFormatXLSX, strExcelFile, True, "", 0

Exit_cmdExcel_Click:
Exit Sub

Err_cmdExcel_Click:
MsgBox err.Description
Resume Exit_cmdExcel_Click

End Sub


ممنون این خیلی خوبه هم اکسل راست چین هست و هم رنگ داره borderها ولی مشکلی که هست وقتی فرم رو فیلتر کنید خروجی اکسل از کل فرم میده و نه اون فیلد‌هایی که فیلتر شدن :متفکر:
نمونه گذاشتم ببینید متوجه می شوید.

padide55
سه شنبه 20 آبان 1399, 08:38 صبح
سلام
فایل قبلی خودتون
این کد رو امتحان کنید
از 0 تا 5 چک کنید
به نظرم 2 از همه بهتره



ActiveSheet.PasteSpecial Format:=2, Link:=False, DisplayAsIcon:=False

parsa70
سه شنبه 20 آبان 1399, 09:11 صبح
سلام
فایل قبلی خودتون
این کد رو امتحان کنید
از 0 تا 5 چک کنید
به نظرم 2 از همه بهتره



.ActiveSheet.PasteSpecial Format:=2, Link:=False, DisplayAsIcon:=False

سلام
خوبه ممنون

sadegh1944
سه شنبه 20 آبان 1399, 12:42 عصر
152421

ممنون این خیلی خوبه هم اکسل راست چین هست و هم رنگ داره borderها ولی مشکلی که هست وقتی فرم رو فیلتر کنید خروجی اکسل از کل فرم میده و نه اون فیلد‌هایی که فیلتر شدن :متفکر:
نمونه گذاشتم ببینید متوجه می شوید.

من چک کردم مشکلی نداشت، در تکس باکس جستجو هر چی وارد کنید در فایل اکسل همونطوری بود.
شاید شما از فیلترهای عناوین فیلد در سابفرم دیتاشیت استفاده می کنید که در این صورت در فایل اکسل فیلتر نمیشه
اگر فیلترهای بیشتری لازم دارید بهتر است تکس باکسهای بیشتری روی فرم قرار دهید و از طریق آن فرم را فیلتر کنید

parsa70
سه شنبه 20 آبان 1399, 12:56 عصر
من چک کردم مشکلی نداشت، در تکس باکس جستجو هر چی وارد کنید در فایل اکسل همونطوری بود.
شاید شما از فیلترهای عناوین فیلد در سابفرم دیتاشیت استفاده می کنید که در این صورت در فایل اکسل فیلتر نمیشه
اگر فیلترهای بیشتری لازم دارید بهتر است تکس باکسهای بیشتری روی فرم قرار دهید و از طریق آن فرم را فیلتر کنید
من از فیلتر سر ستون‌ها استفاده میکنم ستون‌های فیلتر نشده هم تو خروجی اکسل هستند.
دارم روش کار میکنم ببینم از طریق کد‌ شما هم میشه درست کرد یا نه چون با کد زیر که قبلا استفاد می‌کردم اگه ستونی رو فیلتر میکردم فقط از اون ‌ها خروجی اکسل میداد.
On Error GoTo Image20_Click_Err
Me.FullSearchtasksub.SetFocus


DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy
Dim xlapp As Object
Set xlapp = CreateObject("Excel.Application")
With xlapp
.Workbooks.add
.ActiveSheet.PasteSpecial Format:="biff5", Link:=False, DisplayAsIcon:=False






.cells.Select
.cells.EntireColumn.AutoFit
.Visible = True
.range("a1").Select




End With
Image20_Click_Exit:
Exit Sub
Image20_Click_Err:
MsgBox Error$
Resume Image20_Click_Exit
End Sub

محمد رضا بهبودی
چهارشنبه 21 آبان 1399, 08:00 صبح
با سلام و احترام
با تشکر از اساتید محترم
به دلیل اینکه این مطلب بسیار جنبه آموزشی دارد ، لطفا در صورت امکان یک نمونه فایل را بارگذاری بفرمایید .

padide55
چهارشنبه 21 آبان 1399, 09:14 صبح
فیلتر نمودن از ساب فرم و
کپی پیست به اکسل .
خروجی از روش کپی.

parsa70
چهارشنبه 21 آبان 1399, 12:10 عصر
فیلتر نمودن از ساب فرم و
کپی پیست به اکسل .
خروجی از روش کپی.
سلام یک موردی مهندس
نمیدونید چرا وقتی خروجی اکسل میده اون قسمت format as table excell توی منوی home اکسل کار نمیکنه؟؟!
یعنی وقتی رنگ‌ها رو از اون قسمت انتخاب میکنیم مثلا نارنجی یا هر رنگ دیچه چرا رنگ‌ سل ها تغییر نمیکنه؟
سپاس

sadegh1944
چهارشنبه 21 آبان 1399, 13:01 عصر
نمونه اصلاح شده ارسال به اکسل با فیلتر از طریق فرم
البته مجبور شدم یک سری تغییرات تو جداول بدم