Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Εμφάνιση κρυφού φύλλου βάση συγκεκριμένης τιμής

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 23-09-12, 23:15
Όνομα: ΤΖΙΜΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 11-02-2011
Περιοχή: Πύργος Ηλείας
Μηνύματα: 227
Προεπιλογή Εμφάνιση κρυφού φύλλου βάση συγκεκριμένης τιμής

Καλησπέρα σε όλους τους φίλους της κοινότητας.Θα ήθελα την πολύτιμη βοήθεια σας στο εξής.
Έχω δημιουργήσει μια εφαρμογή για διαχείριση καρτελών μαθητολογίου.Δηλαδή ένα βιβλίο το οποίο αποτελείται από καρτέλες μαθητών.Κάθε ένα φύλλο αντιστοιχεί και σε ένα μαθητή με το ονοματεπώνυμο του.
Θέλω όμως στην εφαρμογή αυτή να προσθέσω και το εξής σύνθετο , μιας και οι μαθητές με κωδικό που θα τους δωθεί θα μπορούν να κατεβάζουν την εν λόγω εφαρμογή από την ιστοσελίδα του σχολείου.
Ειδικότερα στο πρώτο φύλλο που έχω δημιουργήσει , σε ένα κελί να πληκτρολογούν τον αριθμό μητρώο τους( αλφαριθμητικός χαρακτήρας) και εν συνεχεία να τους εμφανίζεται η καρτέλα τους, η οποία θα είναι κλειδωμένη.Αυτό απαιτεί:
1. Όλα τα φύλλα θα είναι σε απόκρυψη και θα εμφανίζεται το συγκεκριμένο φύλλο ανάλογα με την πληκτρολόγηση του αριθμού μητρώου.Καλό θα είναι κατά την πληκρολόγηση να γίνεται και ένας έλεγχος ορθότητας για το αν υπάρχει ο αριθμός μητρώου στον πίνακα ή όχι
2.Απαιτεί και ένα φύλλο εργασίας το οποίο και αυτό έχω φτιάξει, όπου και αυτό είναι μη ορατό και περιέχει τα ονοματεπώνυμα και δίπλα τους αριθμούς μητρώου.
Δηλαδή, το βασικό ερώτημα είναι πως μπορεί να γίνεται εμφάνιση ενός φύλλου που έχει αποκρυφθεί, δοθέντος μιας συγκεκριμένης τιμής που θα παίρνει από ένα κελί του πρώτου φύλλου.
Δεν ξέρω αν έγινα κατανοητός.Αν απαιτείται να ανεβάσω και ένα πρδ να το κάνω.
Με εκτίμηση Τζίμης
Απάντηση με παράθεση
  #2  
Παλιά 24-09-12, 06:37
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα σε όλους.

Αγαπητέ Τζίμη, υπάρχει λύση στο ζητούμενο σου.

Ωστόσο, θα σου συνιστούσα να επανεξετάσεις το γεγονός ότι ο μαθητής που θα έχει ΌΛΟ το βιβλίο στη διάθεση του, μπορεί σχετικά εύκολα, έχοντας όλο το χρόνο στη διάθεση του και χωρίς κανέναν κίνδυνο να άρει την προστασία των φύλλων και να αποκτήσει πρόσβαση στα δεδομένα άλλων μαθητών.

Για μένα θα έπρεπε ο μαθητής να κάνει Login σε μια Userform της Excel ( ή σε φόρμα Acess )
και αφού δώσει τα στοιχεία του ( Αρ. μαθητολογίου και κωδικό ), η εφαρμογή να δημιουργεί ένα νέο βιβλίο εργασίας Excel όπου θα περιέχονται μόνο τα δεδομένα που αφορούν τον μαθητή.
Σε καμία περίπτωση δεν θα επέτρεπα να αποστέλλεται ολόκληρο το βιβλίο σε κάθε μαθητή.

Πως γίνεται αυτό τεχνικά:
Η εφαρμογή με βοήθεια του διακομιστή OLEDB με ADO ή DAO μπορεί με βάση τα στοιχεία του μαθητή να αντλήσει μόνο τα δεδομένα του φύλλου εκείνου που αντιστοιχεί στοn Αρ. μαθητολογίου.

Το να έχεις τα ονόματα των μαθητών στις καρτέλες των φύλλων μπορεί να σου δημιουργήσει θέμα στην αναζήτηση τους αλλά αυτό είναι άλλο θέμα.

Μετά απ' αυτά... περιμένουμε νέα σου.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #3  
Παλιά 24-09-12, 08:15
Όνομα: ΤΖΙΜΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 11-02-2011
Περιοχή: Πύργος Ηλείας
Μηνύματα: 227
Προεπιλογή

Φίλε Τάσο καταρχή καλή σου μέρα. Πράγματι έχεις απόλυτο δίκαιο.Αυτή την ανησυχία την έχω και εγώ.Όμως:
1.κατά πόσο ένας απλός χρήστης μπορεί να διαθέτει γνώσεις και χρόνο για να ασχοληθεί με κάτι που κατά πάσα πιθανότητα να μην έχει και μεγάλη σημασία;
2.Η λύση που προτείνες είναι η ιδανικότερη.Όμως απαιτεί προχωρημένες προγραμματιστικές γνώσεις για την υλοποίηση και την συντήρηση του προγράμματος που εγώ δεν τις διαθέτω.
Με εκτίμηση
Απάντηση με παράθεση
  #4  
Παλιά 24-09-12, 13:03
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα Τζίμη.

Σε κάθε περίπτωση απαιτούνται προχωρημένες προγραμματιστικές γνώσεις για το ζητούμενο σου.

Επισυνάπτω ένα παράδειγμα με αρκετά φύλλα, ένα για κάθε μαθητή.

Στο παράδειγμα αυτό απαιτείται η επιλογή ονόματος και ο κατάλληλος κωδικός για να εισέλθει ο μαθητής στην εφαρμογή η οποία θα εμφανίσει μόνο το φύλλο εργασίας που του αντιστοιχεί.
Επίσης το βιβλίο είναι προστατευμένο με κωδικό περιορίζοντας έτσι ανεπιθύμητες δραστηριότητες...

Αν προσπαθήσει κανείς να ανοίξει το βιβλίο χωρίς να έχει ενεργοποιήσει τις μακροεντολές, το μόνο φύλλο που θα δει είναι το φύλλο "Login" το οποίο είναι προστατευμένο με τον κωδικό ''test" (Ο ίδιος κωδικός ισχύει για το βιβλίο εργασίας και το έργο VBA).

Για το πρώτο όνομα (Γιάννης) της πτυσσόμενης λίστας Login ο κωδικός είναι Pass01
Ο Γιάννης έχει δικαιώματα διαχειριστή οπότε μετά από επιτυχημένο Login θα μπορεί να βλέπει και να επεξεργάζεται τα πάντα στο βιβλίο εργασίας.

Σαν διαχειριστής, μπορεί κανείς στο φύλλο UserNames να τροποποιήσει τους κωδικούς,
τα ονόματα φύλλων καθώς και τα δικαιώματα διαχειριστή.

Για τα υπόλοιπα ονόματα οι κωδικοί είναι Pass02 , Pass03 κοκ. αντίστοιχα με τη σειρά εμφάνισης των ονομάτων στη λίστα.


Όσο για τον κώδικα VBA, πιστεύω ότι μπορείς να τον επεξεργαστείς.

Καλή συνέχεια.
Συνημμένα Αρχεία
Τύπος Αρχείου: xls Login.xls (162,0 KB, 94 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 24-09-12, 13:16
Όνομα: ΤΖΙΜΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 11-02-2011
Περιοχή: Πύργος Ηλείας
Μηνύματα: 227
Προεπιλογή

Τάσο ακριβώς αυτό ήθελα.Νομίζω ότι το παράδειγμα αυτό θα βοθήσει και πολλούς άλλους φίλους του forum.Θα μελετήσω όλη την υλοποίηση του παραδείγματος και αν έχω κάποια απορία θα επανέρθω
Ένα ευχαριστώ είναι πολύ λίγο
Με εκτίμηση Τζίμης
Απάντηση με παράθεση
  #6  
Παλιά 24-09-12, 13:39
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Τζίμη, χαίρομαι που βοηθήθηκες!

Μπορείς να προσθέσεις τον παρακάτω κώδικα στη φόρμα ώστε να μην κλείνει από το πλαίσιο ελέγχου [x].

Κώδικας:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = Not CloseMode
End Sub
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #7  
Παλιά 24-09-12, 15:56
Όνομα: ΤΖΙΜΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 11-02-2011
Περιοχή: Πύργος Ηλείας
Μηνύματα: 227
Προεπιλογή

Τάσο αν θέλω και τα φύλλα εργασίας να είναι προστατευμένα όταν τα ανοίγει ο χρήστης τι πρέπει να κάνω;
Απάντηση με παράθεση
  #8  
Παλιά 24-09-12, 17:29
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Τζίμη,Μπορείς να κλειδώνεις και τα φύλλα με τον κωδικό πχ. "test" χειροκίνητα
ή τροποποιείς τμήματα του κώδικα όπως φαίνεται παρακάτω:

Στην λειτουργική μονάδα "ThisWorkbook:"

Κώδικας:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim wks As Object
    ThisWorkbook.Unprotect Password:="test"
    If ShLogin.Visible <> xlSheetVisible Then ShLogin.Visible = xlSheetVisible
    ShLogin.Activate
    For Each wks In ThisWorkbook.Sheets
    wks.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
        If wks.Visible Then
            If wks.Name <> ShLogin.Name Then
                wks.Visible = xlSheetVeryHidden
            End If
        End If
    Next
    ThisWorkbook.Protect Password:="test", Structure:=True, Windows:=False
    ThisWorkbook.Save
End Sub
Στη φόρμα:
Κώδικας:
Private Sub cmdOK_Click()
    Dim username As String, userpass As String, IsAdmin As Integer, wks As Object
    With Me.cboAllUsers
        username = .List(.ListIndex, 1)
        userpass = .List(.ListIndex, 2)
        IsAdmin = .List(.ListIndex, 3)
    End With
    If StrComp(userpass, Me.txtPass.Text, vbBinaryCompare) = 0 Then
        Application.ScreenUpdating = False
        ThisWorkbook.Unprotect Password:="test"
        If IsAdmin Then
            ThisWorkbook.Unprotect Password:="test"
            For Each wks In ThisWorkbook.Sheets
                wks.Visible = xlSheetVisible
                wks.Unprotect Password:="test"
            Next
            ShUserNames.Activate
            Application.ScreenUpdating = True
        Else
           ThisWorkbook.Sheets(username).Visible = xlSheetVisible
           ThisWorkbook.Sheets(username).Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True
            ShLogin.Visible = xlSheetVeryHidden
            ThisWorkbook.Protect Password:="test", Structure:=True, Windows:=False
        End If
        Unload Me
    Else
        Attempts = Attempts + 1
        If Attempts > 3 Then
            MsgBox "Δεν μπορείτε να εισέλθετε στην εφαρμογή." & vbLf & _
                   "Επικοινωνήστε με τον διαχειριστή της εφαρμογής.", vbInformation, ThisWorkbook.Name
            If Workbooks.Count > 1 Then
                ThisWorkbook.Close SaveChanges:=False
            Else
                Application.Quit
            End If
        Else
            Me.txtPass.Text = vbNullString
            Me.txtPass.SetFocus
            MsgBox "Ο κωδικός δεν είναι σωστός! Δοκιμάστε ξανά.", vbExclamation, "Προσοχή!"
        End If
    End If
End Sub
Καλή συνέχεια!

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #9  
Παλιά 24-09-12, 20:33
Όνομα: ΤΖΙΜΗΣ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 11-02-2011
Περιοχή: Πύργος Ηλείας
Μηνύματα: 227
Προεπιλογή

Τάσο λειτουργεί άψογα.
Να είσαι πάντα καλά για τη μεγάλη βοήθεια που μας προσφέρεις.
Τζίμης
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Εκθέσεις ] Εκτύπωση συγκεκριμένης εγγραφής Giannis70 Access - Ερωτήσεις / Απαντήσεις 6 02-02-14 20:38
Άνοιγμα συγκεκριμένης φορμας alfamesitiki Access - Ερωτήσεις / Απαντήσεις 6 26-01-12 17:53
[Γενικά] Εύρεση κοινών τιμών σε δύο κελιά διαφορετικού φύλλου και απόδοση λογικής τιμής greg13 Excel - Ερωτήσεις / Απαντήσεις 5 02-11-11 09:42
[ Φόρμες ] Μη εμφάνιση της ίδιας τιμής σε στήλη apostolos Access - Ερωτήσεις / Απαντήσεις 12 08-02-11 20:14


Η ώρα είναι 10:02.