סגירת תוכנת אקסך דרך VBA
-
אני רוצה לסגור קובץ אקסל דרך VBA, ויש לי 2 דרכים לעשות זאת
- ברמת הקובץ -
ActiveWorkbook.Close
- ברמת התוכנה -
Application.Quit
הבעיה בדרך הראשונה היא שזה סוגר את החלון הפעיל אך אינו סוגר את התוכנה (ואם אין עוד קובץ אקסל פתוח - נשאר התוכנה פתוחה עם רקע אפור ריק), ובדרך השניה יש גם בעיה שהיא סוגרת את כל החלונות הפתוחים, ולא רק את החלון הפעיל.
ניסיתי לכתוב מאקרו שיבדוק אם יש עוד חלון פעיל, כך:Sub סגירה() On Error Resume Next If IsError(Windows(2).Activate) Then Application.Quit Else ActiveWorkbook.Close End If End Sub
אבל הבעיה בזה היא שלפעמים הקובץ הפעיל הוא החלון השני, השאלה אם יש דרך יותר מקורית כדי לבדוק את הנ"ל ולהגיע לתוצאה הרצויה, תודה.
- ברמת הקובץ -
-
@חנון-המרבה אתה כמעט שם, פשוט תשתמש באובייקט
ThisWorkbook
במקום באובייקטActiveWorkbook
, כך:Sub סגירה() If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close End If End Sub
ההבדל ביניהם הוא ש
ThisWorkbook
מחזיר את החוברת שמתוכה רץ הקוד, ואילוActiveWorkbook
מחזיר את החוברת הפעילה.