با سلام
جهت جلوگیری از خطاهای احتمالی در گزارشگیری با اکسل میخوایم فایلهای باز اکسل رو از یه محل خاص یا از کل درایورهای سیستم ببندیم چه روشی را پیشنهاد می فرمائید. با تشکر
با سلام
جهت جلوگیری از خطاهای احتمالی در گزارشگیری با اکسل میخوایم فایلهای باز اکسل رو از یه محل خاص یا از کل درایورهای سیستم ببندیم چه روشی را پیشنهاد می فرمائید. با تشکر
آخرین ویرایش به وسیله moustafa : یک شنبه 27 خرداد 1403 در 03:20 صبح
پیدا کردم بستن فایل اکسل با یک نام مشخص در هر جایی از کامپیوتر
'---------------------------------------------------------------------------------------
' Procedure : XL_CloseWrkBk
' Author : Daniel Pineault, CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Close a specifc Excel WorkBook
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: Uses Late Binding, so none required
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' sFileName : Filename (w ext) of the Excel WorkBook to close
'
' Usage:
' ~~~~~~
' Call XL_CloseWrkBk("Accounts.xlsx")
' Call XL_CloseWrkBk("Accounts.xlsx", True)
'
' Revision History:
' Rev Date(yyyy/mm/dd) Description
' ************************************************** ************************************
' 1 2018-11-30 Initial Release (Forum help)
'---------------------------------------------------------------------------------------
Public Sub XL_CloseWrkBk(sFileName As String, Optional bSaveChanges As Boolean = False)
Dim oExcel As Object
Dim oWrkBk As Object
On Error Resume Next
Set oExcel = GetObject(, "Excel.Application") 'Bind to existing instance of Excel
If Err.Number <> 0 Then 'Excel isn't running
Err.Clear
GoTo Error_Handler_Exit
End If
On Error GoTo Error_Handler
' oExcel.WorkBooks(sFileName).Close
'Iterate through the open workbooks
For Each oWrkBk In oExcel.WorkBooks
If oWrkBk.Name = sFileName Then
oWrkBk.Close SaveChanges:=bSaveChanges 'Adjust the SaveChanges as suits your needs
End If
Next oWrkBk
'Close Excel if no other WorkBooks are open
If oExcel.WorkBooks.Count = 0 Then oExcel.Quit
Error_Handler_Exit:
On Error Resume Next
If Not oWrkBk Is Nothing Then Set oWrkBk = Nothing
If Not oExcel Is Nothing Then Set oExcel = Nothing
Exit Sub
Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: XL_CloseWrkBk" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occurred!"
Resume Error_Handler_Exit
End Sub
با اندکی ویرایش برای هر فایل اکسلی در هر جایی از کامپیوتر
کد HTML:Public Sub XL_CloseAnyWrkBk(Optional bSaveChanges As Boolean = False) Dim oExcel As Object Dim oWrkBk As Object On Error Resume Next Set oExcel = GetObject(, "Excel.Application") 'Bind to existing instance of Excel If err.Number <> 0 Then 'Excel isn't running err.Clear GoTo Error_Handler_Exit End If On Error GoTo Error_Handler ' oExcel.WorkBooks(sFileName).Close 'Iterate through the open workbooks For Each oWrkBk In oExcel.Workbooks If oWrkBk.NAME <> "" Then oWrkBk.Close SaveChanges:=bSaveChanges 'Adjust the SaveChanges as suits your needs End If Next oWrkBk 'Close Excel if no other WorkBooks are open If oExcel.Workbooks.Count = 0 Then oExcel.Quit Error_Handler_Exit: On Error Resume Next If Not oWrkBk Is Nothing Then Set oWrkBk = Nothing If Not oExcel Is Nothing Then Set oExcel = Nothing Exit Sub Error_Handler: MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _ "Error Number: " & err.Number & vbCrLf & _ "Error Source: XL_CloseWrkBk" & vbCrLf & _ "Error Description: " & err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occurred!" Resume Error_Handler_Exit End Sub
سلام و روز خوش
این که کدها رو پیوست کردین بسیار کار خوبیه.
فکر کنم این تاپیک با خطا در اتصال اکسس به اکسل (barnamenevis.org) در ارتباط یا به شکلی ادامه اون باشه.
اگر این فایل های اکسل رو خودتون باز کردین که کافی هست موارد مربوط به بستن workbook و application رو رعایت کنین.
اگر خارج از برنامه شما باز شده پیشنهاد میکنم یک اسکریپت powershell بنویسین و اون رو اجرا کنین،
بهتر از این هست که از داخل اکسس انجام بدین.
دورد بر شما .بله در ارتباط با اون هستش منتهی چون نمیشه تاپیک رو حذف کرد همینجا گذاشتم اگه مدیران محترم زحمت انتقالشو بکشن ممنون میشم . حالا به نحوی برنامه اکسل خارج ازبرنامه باز شده و چه بسا در پس زمینه باشه که دیده نشه به هنگام اکسپورت یا گزارشگیری برنامه دچار مشکل میشه در باز کردن برنامه ای که بازه یا اطلاعات درست بارگزاری نمیشه یا خیلی کند عمل میکنه که در سایتهای خارجی هم با این دست مشکلات زیاد مواجه و در فورمهای زیادی مطرح شده است بنابراین در اول اجرای گزارشگیری برنامه تمام فایلهای باز اکسل یا فایلی با نام ثابت اما در فولدهاری متفاوت در صورت باز بودن می بنده و مجددا اون فایل اصلی رو از مسیر اصلی که در برنامه بهش اشاره شده باز میکنه