ورود

View Full Version : خطا در اتصال اکسس به اکسل



moustafa
جمعه 28 اردیبهشت 1403, 12:35 عصر
دوستان سلام .من برای گزارشگیری از یه فایل اکسل از قبل طراحی شده استفاده میکنم که اطلاعات از جداول یا کوئری ها به اون فایل اکسل ریخته و در اخر به فرمت پی دی اف save as و با ابزار webbrowser نمایش داده میشه در پاره ای از موارد خطاهای مختلفی مانع از این کار میشه و عجیبه که بعضا این اتفاق می افته یعنی بعد چندین بار کلیک مجددا متصل میشه و ناحیه خطاها یا همون قسمت زرد رنگ در بخش save as کد هست که نمیتونه از از فایل اکسل باز شده save as بگیره

Private Sub btndp_gharardad_Click()
'On Error GoTo lab1
DoCmd.OpenForm "frmpdf"
Dim xlapp As New Excel.Application

Set wrk = xlapp.Workbooks.Open("F:\Access\SandHazine\gharardad1.xlsx")
Set sheetdp = wrk.Sheets("dp")
sheetdp.Select
xlapp.Application.Visible = True
X = Shamsi() & "-" & Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now())
namxlk = "dp#" & X & "#" & ".xlsx"
nampdfk = "F:\Access\SandHazine\dp" & X & ".pdf"

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




Forms!frmpdf!WebBrowserpdf.Navigate (nampdfk)
xlapp.Application.Quit
Set xlapp = Nothing
Set wrk = Nothing

'Exit Sub
'

lab1:
155742

moustafa
جمعه 28 اردیبهشت 1403, 15:00 عصر
دوستان از این روش ایده بگیرین برای گزارشهای حجیم وشکیل و پر از محاسبه ومنعطف .بجای اینکه در گزارش ساز بسیار محدود و کم امکانات و پر از مشقت اکسس گزارش بسازید بسادگی تو اکسل طراحی کنید و اطلاعات رو بریزد توش و به فرمت پی دی اف گزارش بگیرین فقط مشکل بزرگی که باهش مواجه شدم همین مورد بالاست که انشالله با راهنمایی دوستان اینم حل میشه
یه نمونه که اطلاعاتشو با پاکن paint پاک کردم155743

eb_1345
جمعه 28 اردیبهشت 1403, 17:06 عصر
سلام
بنده اگر نمونه فایل شما را در اختیار داشتم راحتتر میتونستم ایراد رو برطرف کنم ولی خودم نمونه فایل ساده ای رو تهیه کردم و اون رو در اینجا قرار میدهم که برای دوستانی که تمایل دارند شیت فایل اکسل برنامشون رو به PDF تبدیل کنن قابل الگو و استفاده باشه

atf1379
جمعه 28 اردیبهشت 1403, 18:17 عصر
سلام
بنده اگر نمونه فایل شما را در اختیار داشتم راحتتر میتونستم ایراد رو برطرف کنم ولی خودم نمونه فایل ساده ای رو تهیه کردم و اون رو در اینجا قرار میدهم که برای دوستانی که تمایل دارند شیت فایل اکسل برنامشون رو به PDF تبدیل کنن قابل الگو و استفاده باشه

سلام
دست گلتون درد نکنه استاد که در بیشتر موارد راهنمائی هاتون با ارائه فایل نمونه همراه است:تشویق::تشویق::تشویق:

moustafa
جمعه 28 اردیبهشت 1403, 22:00 عصر
سلام
بنده اگر نمونه فایل شما را در اختیار داشتم راحتتر میتونستم ایراد رو برطرف کنم ولی خودم نمونه فایل ساده ای رو تهیه کردم و اون رو در اینجا قرار میدهم که برای دوستانی که تمایل دارند شیت فایل اکسل برنامشون رو به PDF تبدیل کنن قابل الگو و استفاده باشه

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

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
که همین اکتیو شیت یا کانکت نمیشه یا میره از فایل اکسل دیگه ای که در گزارش دیگه استفاده کردیم پی دی اف میسازه علیرغم اینکه اون فایل رو بستیم و از حافظه خالش کردیم نمیدونم چطوری به اون فایل غیر مربوط کانکت میشه ؟!!!!!!!!!!

moustafa
جمعه 28 اردیبهشت 1403, 22:15 عصر
سلام
بنده اگر نمونه فایل شما را در اختیار داشتم راحتتر میتونستم ایراد رو برطرف کنم ولی خودم نمونه فایل ساده ای رو تهیه کردم و اون رو در اینجا قرار میدهم که برای دوستانی که تمایل دارند شیت فایل اکسل برنامشون رو به PDF تبدیل کنن قابل الگو و استفاده باشه

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

moustafa
جمعه 28 اردیبهشت 1403, 22:39 عصر
دستور زیر هم فقط اخرین شیت رو به پی دی اف تبدیل میکنه نه همه شیتها رو در کنار هم بطور تجمیعی در یک فیل پی دی اف(.عمل پی دی اف سازی برای هر شیت انجام میشه اما اور رایت میشه رو هم که میمونه اخرین شیت )

Set wrk = xlapp.Workbooks.Open("F:\Access\SandHazine\gharardad1.xlsx")
Set sheetall = wrk.Sheets(Array("dp", "sh", "tk", "ha", "xv"))

xlapp.Application.Visible = True


X = Shamsi() & "-" & Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now())
namxl = "Jameh#" & X & "#" & ".xlsx"
nampdf = "F:\Access\SandHazine\Jameh " & X & ".pdf"


'wrk.Sheets(Array("dp", "sh", "tk", "ha", "xv")).Select
For Each shet In sheetall

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

Next

eb_1345
جمعه 28 اردیبهشت 1403, 23:44 عصر
دستور زیر هم فقط اخرین شیت رو به پی دی اف تبدیل میکنه نه همه شیتها رو در کنار هم بطور تجمیعی در یک فیل پی دی اف(.عمل پی دی اف سازی برای هر شیت انجام میشه اما اور رایت میشه رو هم که میمونه اخرین شیت )


در نمونه اصلاح شده ضمیمه فایل اکسل دارای 3 شیت است که برای تشخیص بهتر زمینه جدول هر شیت داری یک رنگ متفاوت میباشد .
در نمونه فوق بعد از عملیات یک فایل pdf با همه شیت ها در کنار برنامه با نامی که تشکیل شده از نام تاریخ شمسی و ساعت ایجاد میشود . بدیهیست در هر بار کلیک در زمان های مختلف فایل جدیدی با نام جدید ایجاد میشود.

moustafa
شنبه 29 اردیبهشت 1403, 00:51 صبح
در نمونه اصلاح شده ضمیمه فایل اکسل دارای 3 شیت است که برای تشخیص بهتر زمینه جدول هر شیت داری یک رنگ متفاوت میباشد .
در نمونه فوق بعد از عملیات یک فایل pdf با همه شیت ها در کنار برنامه با نامی که تشکیل شده از نام تاریخ شمسی و ساعت ایجاد میشود . بدیهیست در هر بار کلیک در زمان های مختلف فایل جدیدی با نام جدید ایجاد میشود.
ضمن تشکر اینطوری از کل شیتهای فایل پی دی اف میسازه . در خود فایل ارسالی شما فرض کنید 5 کاربرگ دارین که سه تای وسطی گزارشاتتون هست اولی برای ورود اطلاعات از اکسس آخری برای محاسبات و انتقال به اون سه تا شیت وسطی در واقع میخوایم فقط از سه تای وسطی در یک فایل پی دی اف گزارش تجمیمی بسازیم نه همش .ممنون میشم زحمتشو بکشید

moustafa
شنبه 29 اردیبهشت 1403, 01:31 صبح
شیتهای غیر گزارشی رو مخفی کردم و از خود فایل پی دی اف گرفتم درست شد حالا بعدا ارور نده یا مشکل دیگه ای پیش نیاد

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

eb_1345
شنبه 29 اردیبهشت 1403, 10:16 صبح
شیتهای غیر گزارشی رو مخفی کردم و از خود فایل پی دی اف گرفتم درست شد حالا بعدا ارور نده یا مشکل دیگه ای پیش نیاد

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

اگر چناچنه مشکلی پیش آمد کدهای زیر رو جایگزین کن !


Dim X As String
Dim MyFullName As String
Dim ExcelPath As String
Dim xlAppFTP As Object, xlWb As Object
Set xlAppFTP = CreateObject("Excel.Application")
X = shamsi() & "-" & Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now())
ExcelPath = Application.CurrentProject.Path + "\x.xlsx"
Set xlWb = xlAppFTP.Workbooks.Open(ExcelPath)
xlAppFTP.Application.Visible = True
MyFullName = Application.CurrentProject.Path + "\Jameh" & X & ".pdf"
xlAppFTP.Sheets(Array("A", "B", "C")).Select
xlAppFTP.ActiveSheet.ExportAsFixedFormat Type:=0, FileName:=MyFullName, _
Quality:=1, IncludeDocProperties:=True, IgnorePrintAreas:=True, OpenAfterPublish:=True
xlAppFTP.Application.Quit
Set xlAppFTP = Nothing
Set xlWb = Nothing

در کدهای اصلاح شده فوق فقط شیت های انتخاب شده به pdf تبدیل میشوند .

moustafa
شنبه 29 اردیبهشت 1403, 11:15 صبح
اگر چناچنه مشکلی پیش آمد کدهای زیر رو جایگزین کن !


Dim X As String
Dim MyFullName As String
Dim ExcelPath As String
Dim xlAppFTP As Object, xlWb As Object
Set xlAppFTP = CreateObject("Excel.Application")
X = shamsi() & "-" & Hour(Now()) & "-" & Minute(Now()) & "-" & Second(Now())
ExcelPath = Application.CurrentProject.Path + "\x.xlsx"
Set xlWb = xlAppFTP.Workbooks.Open(ExcelPath)
xlAppFTP.Application.Visible = True
MyFullName = Application.CurrentProject.Path + "\Jameh" & X & ".pdf"
xlAppFTP.Sheets(Array("A", "B", "C")).Select
xlAppFTP.ActiveSheet.ExportAsFixedFormat Type:=0, FileName:=MyFullName, _
Quality:=1, IncludeDocProperties:=True, IgnorePrintAreas:=True, OpenAfterPublish:=True
xlAppFTP.Application.Quit
Set xlAppFTP = Nothing
Set xlWb = Nothing

در کدهای اصلاح شده فوق فقط شیت های انتخاب شده به pdf تبدیل میشوند .

دست شما درد نکنه به همه کدها wrk.ActiveSheet رو جایگزین ActiveSheet کردم اورر 91 حل شد .فقط این چرایی برام موند علیرغم که فایل اکسل رو می بندیم و از حافظه پاک میکنیم حتی با تسک منیجرچرا ActiveSheet تو حافظه میمونه وقتی خالیه ارور میده یا به فایل اکسل دیگه ای متصل میشه علیرغم اینکه پیشترش من کدهای نوشته ام که هر چی فایل اکسل هستش رو ببنده . کمک بزرگی بود با سپاس فراوان

eb_1345
شنبه 29 اردیبهشت 1403, 13:30 عصر
دفقط این چرایی برام موند علیرغم که فایل اکسل رو می بندیم و از حافظه پاک میکنیم حتی با تسک منیجرچرا ActiveSheet تو حافظه میمونه وقتی خالیه ارور میده یا به فایل اکسل دیگه ای متصل میشه علیرغم اینکه پیشترش من کدهای نوشته ام که هر چی فایل اکسل هستش رو ببنده
غیر از بستن فایل اکسل لازمه متغییر شیت رو هم با دستور Set VariableSheet= Nothing ببندین ! آیا با این وجود هم ActiveSheet تو حافظه میمونه ؟
فکر می کنم موضوعی که میفرمائید در مورد نمونه فایل پست قبل بنده صدق نمیکنه ؟
برای امتحان بنده در نمونه جدید جدول شیت B که بعنوان شیت انتخاب شده و فعال معرفی شده حذف نمودم که می بینی در فایل PDF شیت فوق وجود ندارد و اروری هم صادر نمیشه .
ضمناً در نمونه جدید کدها هیچ تغییری نکرده اند فقط جدول شیت B رو حذف کرده ام

mazoolagh
شنبه 29 اردیبهشت 1403, 15:11 عصر
سلام جناب بهرامی
لطفا برای این یک تاپیک مستقل بزنین،
برنامه سودمندی هست که میتونه به خیلی ها کمک کنه و اینجوری در جستجو پیدا نمیشه!

پیشاپیش تشکر میکنم.

moustafa
شنبه 29 اردیبهشت 1403, 16:38 عصر
غیر از بستن فایل اکسل لازمه متغییر شیت رو هم با دستور Set VariableSheet= Nothing ببندین ! آیا با این وجود هم ActiveSheet تو حافظه میمونه ؟
فکر می کنم موضوعی که میفرمائید در مورد نمونه فایل پست قبل بنده صدق نمیکنه ؟
برای امتحان بنده در نمونه جدید جدول شیت B که بعنوان شیت انتخاب شده و فعال معرفی شده حذف نمودم که می بینی در فایل PDF شیت فوق وجود ندارد و اروری هم صادر نمیشه .
ضمناً در نمونه جدید کدها هیچ تغییری نکرده اند فقط جدول شیت B رو حذف کرده ام
شما با ActiveSheet کار نکردین و مستقیما به خود sheet و در ارایه ای از شیتها به workbook ش اشاره کردین بنابراین این خطای 91 پیش نمیاد خود منم برای 5تا گزارشی که داشتم به چهارتاش مستقیم اشاره کرده بودم فقط یکی رو به همراه گزارش جامع به اکتیو شیت . منتهی چون من اصلا ممتد کار نمیکنم جریان کار از دستم میره بعد 4 ماه یه دوستی که ازم این برنامه رو خواسته بود یه سرکی بهش کشیدم . این خطای 91 با یه خطای دیگه که فکر کنم 34 باشه و اینجور میگه که به سرور اکسل کانکت نمیشه همیشه اتفاق نمی افتاد بعضا پیش می اومد بی انکه ردی ازش وجود داشته باشه حتی من در تکس منیجر همه فایلهای فعال و باز اکسل رو می بستم وسیستم رو ریستارت هم میکردم باز این ارورها پیش می اومد!!!! حالا دیگه نمی دونم افیس و ویندوز اورجینال نیست از رجیستری اوناست که اینطور باگا پیش میاد.....

eb_1345
شنبه 29 اردیبهشت 1403, 16:51 عصر
سلام جناب بهرامی
لطفا برای این یک تاپیک مستقل بزنین،
برنامه سودمندی هست که میتونه به خیلی ها کمک کنه و اینجوری در جستجو پیدا نمیشه!

پیشاپیش تشکر میکنم.
سلام و عرض ادب
چشم استاد !