הצפנת גיליון באקסל

  • פותח הנושא ל13
  • פורסם בתאריך

מיכאל אבידן

Member
מנהל
אני רק מניח את זה כאן ועוד מעט חוזר . . .


&nbsp
1. האם החזקת המקש: Shift לחוץ בעת ובמהלך פתיחת חוברת העבודה לא תנטרל/תמנע את הרצת המקרו

&nbsp
2. לחילופין - האם העלאת רמת אבטחת המקרואים ל'גבוהה' (ב'מרכז יחסי האמון'), לא תגרום לאותה תופעה

&nbsp
 

ziv98

Member
חזרת ?

את הנקודה הזאת סגרנו בתחילת הדיון באמירה של השואל שכותרתה "ואגב..." בלעדיה כל הדיון עקר.

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

מיכאל אבידן

Member
מנהל
כן, - אבל . . .


יש הבדל בין פיצוח/חשיפת קודי מקרו, מוגנים בסיסמה, לבין החזקת SHIFT לחוץ.
 

ל13

New member
תודה רבה רבה. מעריך מאוד. אבל לא עובד אצלי...

מעריך מאוד את ההשקעה שלך במציאת פתרון עבורי. זה בכלל לא מובן מאליו...
אבל ... זה לא עובד.... כנראה שפספסתי משהו (ממש קטן...) בהתאמה ואני לא מבין מה... אני כבר שעות מנסה להתאים את הקוד לקובץ שלי, עברתי על כל קטעי הקוד שרשמת בכל ב-UserForm1 מאחורי כפתור הכניסה, ב-Module1, ובחוברת_עבודה_זו. העתקתי אותם לקובץ שלי וביצעתי התאמה לכל מה שאני יכול לחשוב עליו... עדכנתי שמות גיליונות, שם הפיבוט עצמו, עדכנתי את שמות העובדים ואת הסיסמאות בדיוק באותן עמודות שאתה מילאת והגדרת בקוד, וכאשר אני מקליד סיסמה של אחד העובדים בשדה המיועד ומקליק על הכפתור של ה-form שאמור לבצע דרך הקוד את סינון הפיבוט לפי שם העובד הנבחר, הסינון לא מתבצע. זה כן מקפיץ אותי לגיליון עם הפיבוט אבל הוא נשאר מלא ולא מסונן...
יש לך מושג מה יכול להתפספס?
מצרף כאן השוואה בין הקודים שרשמת לבין הקודים שאני התאמתי לקובץ לפי הדוגמא שלך.

תודה מראש
 

ziv98

Member
קובץ דוגמה !

אם יש בעיה עם הנתונים - תכתוב בהכל 0 חוץ משמות העמודות והעובדים.
&nbsp
אם אתה רוצה להתמודד לבד - תוריד את שורת ה - on error, ותראה איפה הוא נתקע.
נסה גם - כפתור ימני של העכבר על הטבלה, אפשרויות , לשונית נותים נתונים, הפוך את "מספר פריטים לשמירה" - ל"ללא", רענן את הטבלה.
 

ל13

New member
עשיתי מה שאמרת....

1) הורדתי את שורת ה-on error.
ההרצה נתקעת על שורת ה- pvi.Visible = True (מצ"ב צילום מסך).
לא יודע מה זה PVI ומה משמעות השגיאה...

2) שיניתי בטבלה באפשרויות - נתונים - מספר פריטים לשמירה - ללא.
וזה לא עזר... השגיאה מתקבלת שוב באותו המקום...

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

שוב המון המון תודה


 

ל13

New member
הנה קובץ המקור שלי...


מצ"ב קובץ המקור שלי אחרי שמחקתי ממנו נתונים לא רלוונטיים לענין הקוד.

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

בכל גיליון צירפתי הסבר מדויק בתוך מלבן אדום.

תודה רבה רבה
 

ziv98

Member
איבדתי אותך לגמרי

8/12 23:37 - אין סינון
10/12 10:43 - הקוד נתקע
10/12 22:48 - הכל עובד, רק עד שהכל מתרענן - אפשר לקרוא מה כתוב במסך...
&nbsp
 

ziv98

Member
גיליון המקור לנתוני הפיבוט הסודי - יישארו גלויים ????

 

ל13

New member
מתנצל על כל הבלגן...


מתנצל על כל הבלגן...

רשמתי הסברים מדויקים בתוך הקובץ שצירפתי אתמול וחשבתי שזה מספק...
מנסה לעשות סדר ולהסביר מחדש:

* גיליון <כניסה לקובץ> - פתיחת חלון סיסמה.

* גיליון <שיבוץ לפי פרויקט> - נתוני המקור של הפיבוט. נכון, אמור להישאר גלוי לכולם. ולמה? כי הנתונים "הסודיים" לא נמצאים בו אלא בטבלאות רגילות (לא פיבוט) שמוצמדת לפיבוט משמאל והם נלקחים ב-vlookup מגיליונות אחרים.

* גיליון <תכנון מול ביצוע_ראשי> - הגיליון שמכיל גם את הפיבוט וגם טבלאות רגילות משמאלו. נתוני הפיבוט אינם סודיים אבל נתוני הטבלאות כן. ולכן הצורך הוא לקבל פיבוט מסונן לפי שם העובד (בהתאם לסיסמה שהקיש), וכך יתקבלו גם הטבלאות שמשמאל מסוננות בהתאמה גם כן לפי אותו עובד. וכך סינון הפיבוט משמש גם לסינון הרצוי של הטבלאות משמאל. לכן קריטי שהגיליון הזה יוצג בסינון המתאים לפי סיסמה ולא פתוח לכולם פרט למנהל.

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

מקווה שעכשיו זה מובן וברור ושוב מתנצל על הבלגן.

תודה.
 

ziv98

Member
תיקונים

כדי לקבל את שדה סיסמה ריק, הוסף למאקרו שפותח אותו:
קוד:
Sub UnhideSheet()

Application.ScreenUpdating = False
UserForm1.Show
UserForm1.pssWord = ""
End Sub
כדי לחשוף את גיליון הפיבוט רק אחרי כל הפעולות - הוסף screenupdating:


קוד:
Private Sub CommandButton1_Click()

On Error GoTo ex:
user = Cells(WorksheetFunction.Match(Val(Me.pssWord), Range("R:R"), 0), 19)

Application.ScreenUpdating = False
  .
  .
  .
  .
  .
  .
  .

ex:
Application.ScreenUpdating = True
End Sub
לגבי הסתרת גיליונות - אתה כבר אמור להכיר את הפקודות מתחילת הדיון
 

ל13

New member


המון המון תודה זיו... מעריך מאוד את כל העזרה שלך! יצא מעולה!

2 שאלות כדי לסגור קצוות אחרונים:

1) למרות שהוספתי פקודה Activate.("כניסה לקובץ")Worksheets
בקוד של Workbook_open כדי שהקובץ ייפתח כברירת מחדל על גיליון הקלדת הסיסמה כדי לעבור לפיבוט המסונן בהתאמה למשתמש, עדיין הקובץ נפתח על גיליון הפיבוט (מהשמירה האחרונה) ורק אחרי כמה שניות עובר לגיליון הפתיחה ופותח את חלון הסיסמה. האם יש דרך להימנע מכך ולקבל ישירות את גיליון הפתיחה עם פתיחת הקובץ ללא הצגת הפיבוט לפני כן?

2) להתניית אופן הסינון של הפיבוט לפי סיסמת המשתמש הוספתי לקוד ה-UserForm גם התניה של סוג ההגנה על הגיליון. כלומר, כשמדובר בעובד - הגיליון יהיה מוגן לחלוטין. כשמדובר במנהל - הגיליון יהיה מוגן, פרט לאפשרות "לשחק" בסינונים של הפיבוט שתישאר פתוחה. את אותה התנייה אני רוצה להוסיף גם לקוד של ה- WB_Open וגם לקוד שמרענן את הפיבוט. האם יש דרך להגדיר התנייה זו שהיא מחוץ לקוד של ה-UserForm שמתנה את סינון הפיבוט?
הבעיה היא שמנהל שמקבל את הפיבוט עם אפשרות משחק בסינונים כנדרש, לפי ההתנייה ב-UserForm, ברגע שלחץ על כפתור המאקרו שמרענן את הפיבוט, הגיליון הופך למוגן (הקוד עושה Unprotect -> Resfresh Pivot -> Protect) וגם אפשרות המשחק בסינונים מתבטלת...

מצורפים צילומי מסך של הקודים המדוברים.

תודה מראש






 

ziv98

Member
התייחסות

כמו שיש אירוע פתיחת קובץ, יש אירוע סגירת קובץ. תוסיף אירוע כזה, שם תבחר את הגיליון הפעיל לגיליון הריק.
לגבי החלק השני - אתה יכול למשל להציב בגיליון המשתמשים / סיסמאות, בתא קבוע מראש, ערך בכניסה של המשתמש. הערך יהיה 0/1 - מנהל כן / לא. לערך הזה תוכל להתייחס בכל מאקרו שירוץ בקובץ.
 

ל13

New member
תודה על הרעיונות...

תודה על הרעיונות...

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

2) יש מצב לדוגמה של הצבת ערך וקוד מאקרו שיתייחס אליו כדי לבחור את סוג הגנת גיליון לפי משתמש (הגנה מלאה / הגנה חלקית)? צירפתי תמונה.

תודה.

 

ziv98

Member
בשלב זה

1. אתה כבר צריך לדעת שבלי קובץ דוגמה - קשה להתייחס
2. לדעתי לפני סגירה אתה צריך ממש לבצע SELECT לגיליון, ואז לשמור ולצאת (הקלט מאקרו).
3. כל מה שנשאר באבחנה בין סוגי ההגנה, זה לעטוף הכל ב - IF וכל סוג הגנה (חלקית או מלאה) בהתאם לצד של true או false.
&nbsp
לדעתי צריכים להיות לך כבר כל הכלים להשלמת המלאכה.
&nbsp
בהצלחה !
 

ל13

New member
שוב תודה


1. צודק...
2. Select לא פותר את הבעיה...
3. לא יודע איך לרשום את הקוד...

לסיכום העניין, בשלב זה, פתרונות ה-VBA המעולים שהגעת אליהם בקובץ בזכותך, מספקים באופן כללי, ואוותר על הטיפול בסעיף 2 ו-3.

ורק הערה קטנה: עזרה בפורום למישהו שלא יודע VBA (או שפות תכנות אחרות), עם כמה שתהיה טובה ומסורה (כמו במקרה שקיבלתי ממך), עדיין לא נותנת לנעזר את היכולת לשלוט בקוד ולהסתדר לבד... לפחות לא לי.

ובכל מקרה, שוב המון המון תודה על הטיפול המסור ועל הפתרונות המעולים
 

ziv98

Member
התייחסות

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

ל13

New member
ברור שלמדתי... והרבה!

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


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


תודה רבה!
 
למעלה