תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    סגירת תוכנת אקסך דרך VBA

    תוכנה
    2
    2
    50
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגב כנושא
    התחבר בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • חנון המרבה
      חנון המרבה נערך לאחרונה על ידי חנון המרבה

      אני רוצה לסגור קובץ אקסל דרך 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
      

      אבל הבעיה בזה היא שלפעמים הקובץ הפעיל הוא החלון השני, השאלה אם יש דרך יותר מקורית כדי לבדוק את הנ"ל ולהגיע לתוצאה הרצויה, תודה.

      OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • OdedDvir
        OdedDvir @חנון המרבה נערך לאחרונה על ידי

        @חנון-המרבה אתה כמעט שם, פשוט תשתמש באובייקט ThisWorkbook במקום באובייקט ActiveWorkbook, כך:

        Sub סגירה()
           If Workbooks.Count = 1 Then
              Application.Quit
           Else
              ThisWorkbook.Close
           End If
        End Sub
        

        ההבדל ביניהם הוא ש ThisWorkbook מחזיר את החוברת שמתוכה רץ הקוד, ואילו ActiveWorkbook מחזיר את החוברת הפעילה.

        תגובה 1 תגובה אחרונה תגובה ציטוט 2
        • 1 / 1
        • פוסט ראשון
          פוסט אחרון
        בא תתחבר לדף היומי!