View Full Version : بستن فابلهای باز اکسل از داخل اکسس
moustafa
شنبه 26 خرداد 1403, 21:49 عصر
با سلام
جهت جلوگیری از خطاهای احتمالی در گزارشگیری با اکسل میخوایم فایلهای باز اکسل رو از یه محل خاص یا از کل درایورهای سیستم ببندیم چه روشی را پیشنهاد می فرمائید. با تشکر
moustafa
شنبه 26 خرداد 1403, 23: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
moustafa
یک شنبه 27 خرداد 1403, 02:23 صبح
با اندکی ویرایش برای هر فایل اکسلی در هر جایی از کامپیوتر
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
mazoolagh
یک شنبه 27 خرداد 1403, 11:56 صبح
سلام و روز خوش
این که کدها رو پیوست کردین بسیار کار خوبیه.
فکر کنم این تاپیک با خطا در اتصال اکسس به اکسل (barnamenevis.org) (https://barnamenevis.org/showthread.php?581474-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%A8%D9%87-%D8%A7%DA%A9%D8%B3%D9%84) در ارتباط یا به شکلی ادامه اون باشه.
اگر این فایل های اکسل رو خودتون باز کردین که کافی هست موارد مربوط به بستن workbook و application رو رعایت کنین.
اگر خارج از برنامه شما باز شده پیشنهاد میکنم یک اسکریپت powershell بنویسین و اون رو اجرا کنین،
بهتر از این هست که از داخل اکسس انجام بدین.
moustafa
یک شنبه 27 خرداد 1403, 16:32 عصر
سلام و روز خوش
این که کدها رو پیوست کردین بسیار کار خوبیه.
فکر کنم این تاپیک با خطا در اتصال اکسس به اکسل (barnamenevis.org) (https://barnamenevis.org/showthread.php?581474-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%A8%D9%87-%D8%A7%DA%A9%D8%B3%D9%84) در ارتباط یا به شکلی ادامه اون باشه.
اگر این فایل های اکسل رو خودتون باز کردین که کافی هست موارد مربوط به بستن workbook و application رو رعایت کنین.
اگر خارج از برنامه شما باز شده پیشنهاد میکنم یک اسکریپت powershell بنویسین و اون رو اجرا کنین،
بهتر از این هست که از داخل اکسس انجام بدین.
دورد بر شما .بله در ارتباط با اون هستش منتهی چون نمیشه تاپیک رو حذف کرد همینجا گذاشتم اگه مدیران محترم زحمت انتقالشو بکشن ممنون میشم . حالا به نحوی برنامه اکسل خارج ازبرنامه باز شده و چه بسا در پس زمینه باشه که دیده نشه به هنگام اکسپورت یا گزارشگیری برنامه دچار مشکل میشه در باز کردن برنامه ای که بازه یا اطلاعات درست بارگزاری نمیشه یا خیلی کند عمل میکنه که در سایتهای خارجی هم با این دست مشکلات زیاد مواجه و در فورمهای زیادی مطرح شده است بنابراین در اول اجرای گزارشگیری برنامه تمام فایلهای باز اکسل یا فایلی با نام ثابت اما در فولدهاری متفاوت در صورت باز بودن می بنده و مجددا اون فایل اصلی رو از مسیر اصلی که در برنامه بهش اشاره شده باز میکنه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.