| Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Καλησπέρα σε όλους τους φίλους της κοινότητας.Θα ήθελα την πολύτιμη βοήθεια σας στο εξής. Έχω δημιουργήσει μια εφαρμογή για διαχείριση καρτελών μαθητολογίου.Δηλαδή ένα βιβλίο το οποίο αποτελείται από καρτέλες μαθητών.Κάθε ένα φύλλο αντιστοιχεί και σε ένα μαθητή με το ονοματεπώνυμο του. Θέλω όμως στην εφαρμογή αυτή να προσθέσω και το εξής σύνθετο , μιας και οι μαθητές με κωδικό που θα τους δωθεί θα μπορούν να κατεβάζουν την εν λόγω εφαρμογή από την ιστοσελίδα του σχολείου. Ειδικότερα στο πρώτο φύλλο που έχω δημιουργήσει , σε ένα κελί να πληκτρολογούν τον αριθμό μητρώο τους( αλφαριθμητικός χαρακτήρας) και εν συνεχεία να τους εμφανίζεται η καρτέλα τους, η οποία θα είναι κλειδωμένη.Αυτό απαιτεί: 1. Όλα τα φύλλα θα είναι σε απόκρυψη και θα εμφανίζεται το συγκεκριμένο φύλλο ανάλογα με την πληκτρολόγηση του αριθμού μητρώου.Καλό θα είναι κατά την πληκρολόγηση να γίνεται και ένας έλεγχος ορθότητας για το αν υπάρχει ο αριθμός μητρώου στον πίνακα ή όχι 2.Απαιτεί και ένα φύλλο εργασίας το οποίο και αυτό έχω φτιάξει, όπου και αυτό είναι μη ορατό και περιέχει τα ονοματεπώνυμα και δίπλα τους αριθμούς μητρώου. Δηλαδή, το βασικό ερώτημα είναι πως μπορεί να γίνεται εμφάνιση ενός φύλλου που έχει αποκρυφθεί, δοθέντος μιας συγκεκριμένης τιμής που θα παίρνει από ένα κελί του πρώτου φύλλου. Δεν ξέρω αν έγινα κατανοητός.Αν απαιτείται να ανεβάσω και ένα πρδ να το κάνω. Με εκτίμηση Τζίμης |
|
#2
| ||||
| ||||
|
Καλημέρα σε όλους. Αγαπητέ Τζίμη, υπάρχει λύση στο ζητούμενο σου. Ωστόσο, θα σου συνιστούσα να επανεξετάσεις το γεγονός ότι ο μαθητής που θα έχει ΌΛΟ το βιβλίο στη διάθεση του, μπορεί σχετικά εύκολα, έχοντας όλο το χρόνο στη διάθεση του και χωρίς κανέναν κίνδυνο να άρει την προστασία των φύλλων και να αποκτήσει πρόσβαση στα δεδομένα άλλων μαθητών. Για μένα θα έπρεπε ο μαθητής να κάνει Login σε μια Userform της Excel ( ή σε φόρμα Acess ) και αφού δώσει τα στοιχεία του ( Αρ. μαθητολογίου και κωδικό ), η εφαρμογή να δημιουργεί ένα νέο βιβλίο εργασίας Excel όπου θα περιέχονται μόνο τα δεδομένα που αφορούν τον μαθητή. Σε καμία περίπτωση δεν θα επέτρεπα να αποστέλλεται ολόκληρο το βιβλίο σε κάθε μαθητή. Πως γίνεται αυτό τεχνικά: Η εφαρμογή με βοήθεια του διακομιστή OLEDB με ADO ή DAO μπορεί με βάση τα στοιχεία του μαθητή να αντλήσει μόνο τα δεδομένα του φύλλου εκείνου που αντιστοιχεί στοn Αρ. μαθητολογίου. Το να έχεις τα ονόματα των μαθητών στις καρτέλες των φύλλων μπορεί να σου δημιουργήσει θέμα στην αναζήτηση τους αλλά αυτό είναι άλλο θέμα. Μετά απ' αυτά... περιμένουμε νέα σου. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#3
| |||
| |||
|
Φίλε Τάσο καταρχή καλή σου μέρα. Πράγματι έχεις απόλυτο δίκαιο.Αυτή την ανησυχία την έχω και εγώ.Όμως: 1.κατά πόσο ένας απλός χρήστης μπορεί να διαθέτει γνώσεις και χρόνο για να ασχοληθεί με κάτι που κατά πάσα πιθανότητα να μην έχει και μεγάλη σημασία; 2.Η λύση που προτείνες είναι η ιδανικότερη.Όμως απαιτεί προχωρημένες προγραμματιστικές γνώσεις για την υλοποίηση και την συντήρηση του προγράμματος που εγώ δεν τις διαθέτω. Με εκτίμηση |
|
#4
| ||||
| ||||
|
Καλημέρα Τζίμη. Σε κάθε περίπτωση απαιτούνται προχωρημένες προγραμματιστικές γνώσεις για το ζητούμενο σου. Επισυνάπτω ένα παράδειγμα με αρκετά φύλλα, ένα για κάθε μαθητή. Στο παράδειγμα αυτό απαιτείται η επιλογή ονόματος και ο κατάλληλος κωδικός για να εισέλθει ο μαθητής στην εφαρμογή η οποία θα εμφανίσει μόνο το φύλλο εργασίας που του αντιστοιχεί. Επίσης το βιβλίο είναι προστατευμένο με κωδικό περιορίζοντας έτσι ανεπιθύμητες δραστηριότητες... Αν προσπαθήσει κανείς να ανοίξει το βιβλίο χωρίς να έχει ενεργοποιήσει τις μακροεντολές, το μόνο φύλλο που θα δει είναι το φύλλο "Login" το οποίο είναι προστατευμένο με τον κωδικό ''test" (Ο ίδιος κωδικός ισχύει για το βιβλίο εργασίας και το έργο VBA). Για το πρώτο όνομα (Γιάννης) της πτυσσόμενης λίστας Login ο κωδικός είναι Pass01 Ο Γιάννης έχει δικαιώματα διαχειριστή οπότε μετά από επιτυχημένο Login θα μπορεί να βλέπει και να επεξεργάζεται τα πάντα στο βιβλίο εργασίας. Σαν διαχειριστής, μπορεί κανείς στο φύλλο UserNames να τροποποιήσει τους κωδικούς, τα ονόματα φύλλων καθώς και τα δικαιώματα διαχειριστή. Για τα υπόλοιπα ονόματα οι κωδικοί είναι Pass02 , Pass03 κοκ. αντίστοιχα με τη σειρά εμφάνισης των ονομάτων στη λίστα. Όσο για τον κώδικα VBA, πιστεύω ότι μπορείς να τον επεξεργαστείς. Καλή συνέχεια.
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#5
| |||
| |||
|
Τάσο ακριβώς αυτό ήθελα.Νομίζω ότι το παράδειγμα αυτό θα βοθήσει και πολλούς άλλους φίλους του forum.Θα μελετήσω όλη την υλοποίηση του παραδείγματος και αν έχω κάποια απορία θα επανέρθω Ένα ευχαριστώ είναι πολύ λίγο Με εκτίμηση Τζίμης |
|
#6
| ||||
| ||||
|
Τζίμη, χαίρομαι που βοηθήθηκες! Μπορείς να προσθέσεις τον παρακάτω κώδικα στη φόρμα ώστε να μην κλείνει από το πλαίσιο ελέγχου [x]. Κώδικας: Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = Not CloseMode
End Sub
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#7
| |||
| |||
|
Τάσο αν θέλω και τα φύλλα εργασίας να είναι προστατευμένα όταν τα ανοίγει ο χρήστης τι πρέπει να κάνω;
|
|
#8
| ||||
| ||||
|
Τζίμη,Μπορείς να κλειδώνεις και τα φύλλα με τον κωδικό πχ. "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
| |||
| |||
|
Τάσο λειτουργεί άψογα. Να είσαι πάντα καλά για τη μεγάλη βοήθεια που μας προσφέρεις. Τζίμης |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | 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 |
Η ώρα είναι 06:50.


Υβριδικός τρόπος

