שאלה בנושא Macro באקסל

Mister Blue Sky

New member
שאלה בנושא Macro באקסל

שלום לכולם,
יש לי קובץ אקסל מוגן בפני עריכה (יש סיסמת הגנה לכל גיליון, סיסמה ל-Workbook וסיסמה ל-VBA).
אני מעוניין להפוך את הקובץ זמין רק ליום אחד (או כל פרק זמן אחר לצורך העניין) וניסיתי ליצור פקודת VBA שמיישמת את הפעולה. משהו בסגנון: "אם התא הזה (כלומר: today() ) שונה מהתאריך שהגדרתי, תמחק את כל הגליונות".
בגלל שהקובץ מוגן בסיסמאות, הוא לא מאפשר את פעילות המחיקה.
הוא בעצם מגדיר שגיאה על sheet.name("sheet1").delete
חיפשתי באינטרנט פונקציות שמאפשרות פתיחת נעילת הסיסמה ומצאתי את זו:
ActiveWorkbook.Unprotect “1234”, True, True
אבל היא לא עובדת.

הקוד שלי נראה בערך ככה:

Sub Macro1()
If Range("a1") <> "1" Then
ActiveWorkbook.Unprotect “1234”, True, True
Application.DisplayAlerts = False
Sheets("sheet1").Delete
Application.DisplayAlerts = True
ActiveWorkbook.Protect “1234”, True, True
End If
End Sub​

אני משתמש באקסל 2016, ווינדואוס 7, 64 סיביות.
תודה מראש על העזרה.
 

מיכאל אבידן

Member
מנהל
בהנחה שאתה מודע לעובדה שאין היום הגנות מספיק טובות . . .


וכל משתמש ממוצע יודע כיצד לעקוף אותן - לא ברור לי על מה ולמה הכנסת, במקרו, את ביטול הגנת קובץ


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

בעיקרון, גוף המקרו אמור, לדעתי, להיראות כך:
קוד:
If Range("A1") <> "1" Then
   Sheets("Sheet1").Unprotect Password:="1234"
   Application.DisplayAlerts = False
   Sheets("sheet1").Delete
   Application.DisplayAlerts = True
End If
 

Mister Blue Sky

New member
לא עובד :/

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

הכנסתי את הפקודה (גם את זו ששלחת וגם את זו שלי) בחלונית ה-Thisworkbook. כך שזה אמור לרוץ עם פתיחת הקובץ, אך לא קורה דבר.
משום שזה לא עבד, הפעלתי את זה בתור מודול, ושם הוא מציין שהפקודה sheet("sheet1").delete לא עובדת.
 

מיכאל אבידן

Member
מנהל
מי הציע לך להשתמש בפקודה: sheet("sheet1").delete
‏...


בקיצור - המשך דיון (איתי) רק לאחר שתצמיד את הקובץ ובו כל המקרואים + כל התאים המככבים כתאי עזר להצגת הערך/תאריך בו הגיליון אמור להימחק.

במילים אחרות - אל תחסיר שום דבר. נתונים חסויים שנה לשמות הנהוגים בממלכת וולט דיסני.

השאר את המקרו במודול Thisworkbook.
 

Mister Blue Sky

New member
גוגל. בערך

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

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