ورود

View Full Version : گزارش سازی با اکسل در اکسس



moustafa
جمعه 13 بهمن 1402, 17:38 عصر
با سلام
برای ساخت گزارشهای پیچیده با دیزاین متفاوت و محاسبات زیاد از اکسل استفاده می کنیم بعد از طراحی گزارش فایل اکسل باز و اطلاعات از اکسس وارد میشه وبعدش به شکل pdf در یه یک WebBrowserبه نمایش میاد . فایل پی دی اف و اکسل در مسیر ونام از پیش تعیین شده ذخبره میشه . در این مثال پنج تا sheetکه هریک حاوی یک گزارش می باشد طی ارایه ای بطور یکجا در یک فایل پی دی اف اوره میشه که تقریبا در گزارش سازی خود اکسس غیر ممکنه و شما به سختی میتونی مولتی ریپورت در قالب یه فایل پی دی اف بگیری



Dim xlapp As New Excel.Application
DoCmd.OpenForm "frmpdf"

Set wrk = xlapp.Workbooks.Open("F:\Access\Projects\ReportExcel.xlsx")

xlapp.Application.Visible = True '


X = Shamsi() & "-" & Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now())
namxl = "Jameh#" & X & "#" & ".xlsx"
nampdf =CurrentProject.Path & "\Backup\" & X & ".pdf"


wrk.Sheets(Array("dp", "sh", "tk", "ha", "xv")).Select


ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=nampdf, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
From:=1, _
To:=25, _
OpenAfterPublish:=False



Forms!frmpdf!WebBrowserpdf.Navigate (nampdf)
wrk.SaveAs CurrentProject.Path & "\Backup\" & namxl
'wrk.Save
wrk.Close False
xlapp.Workbooks.Close
xlapp.Application.Quit
Set wrk = Nothing
End Sub
فقط یکم زمان میبره برای کانکت شدن به اکسل وبعضا ارور میده که بعد جند بار کاکنکت میشه . دوستان اگه تجربه ای در این مورد دارند لطفا ارائه بفرمایند

moustafa
جمعه 13 بهمن 1402, 17:48 عصر
مورد مهم بعدی اینکه قبلش باید فایل مورد نظر بسته باشه وگرنه اطلاعات آپدیت نمیشه یا برنامه به مشکل میخوره برای همین با تابع زیر باز یا بسته بودن فایل چک میشه

Function IsWorkBookOpen(fileName As String)
Dim ff As Long, ErrNo As Long

On Error Resume Next
ff = FreeFile()
Open fileName For Input Lock Read As #ff
Close ff
ErrNo = err
On Error GoTo 0

Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function

moustafa
جمعه 13 بهمن 1402, 18:03 عصر
تابعی که هر چی فایل اکسل باز هست رو ببنده دوستان لطف کنند

mazoolagh
یک شنبه 15 بهمن 1402, 13:28 عصر
سلام و روز خوش
البته خوب متوجه نشدم - ولی فکر نکنم لازم باشه که فایل های اکسل رو باز نگه دارین

moustafa
دوشنبه 16 بهمن 1402, 10:58 صبح
سلام و روز خوش
البته خوب متوجه نشدم - ولی فکر نکنم لازم باشه که فایل های اکسل رو باز نگه دارین
ممنون از شما . باز نه بسته . وقتی فایل اکسلی بازه ارور میده یا کانکت نمیشه یا نمیدونم چرا از اون فایل باز غیر، پی دی اف میسازه در حالیکه در کد نوشتیم چه شیتهایی رو سلکت و اکتیو کنه !!!! برا همین یه تابع میخوائیم که هر چه فایل اکسل چه بطور مخفی و چه آشکار باز باشه رو ببنده. با تشکر

mazoolagh
سه شنبه 24 بهمن 1402, 20:45 عصر
متوجه هستم که نباید باز باشه!
شما مستقیم از اکسل بخونین.

2 تاپیک زیر رو یک نگاه بندازین:

روش ایمپورت محدودی خاص فایل های اکسل در اکسس (https://barnamenevis.org/showthread.php?560186)

مشکل در استخراج رکوردهای خاص (https://barnamenevis.org/showthread.php?564739)

mazoolagh
سه شنبه 24 بهمن 1402, 20:52 عصر
یه تابع میخوائیم که هر چه فایل اکسل چه بطور مخفی و چه آشکار باز باشه رو ببنده
فکر نکنم force close کردن اپلیکیشنی که به هر دلیل busy هست کار خوبی باشه،
ولی شاید بتونین یک اسکریپت powershell بنویسین و اون رو اجرا کنین.