![]() |
Πώς εμποδίζουμε την αποθήκευση αρχείου Excel Την καλησπέρα μου σε όλους. Χτες μου ζήτησε κάτι ο Διευθυντής μου, το οποίο ξεφεύγει λίγο από τις ικανότητες και τις γνώσεις μου. Έχουμε 48 διαφορετικά αρχεία Excel με 8-10 φύλλα εργασίας το καθένα, όπου περνάμε τις βαθμολογίες των μαθητών μας. Μου ζήτησε λοιπόν, αν ο μέσος όρος ενός μαθήματος είναι πάνω από 18,5 να βγαίνει ένα προειδοποιητικό μήνυμα (π.χ. "Υψηλή βαθμολογία") και - αν είναι δυνατόν - να μην αφήνει τον χρήστη να αποθηκεύσει το αρχείο αν δεν πέσει ο μέσος όρος κάτω από 18,5. Ήδη στα αρχεία υπάρχουν διάφορες μακροεντολές με βάση τις οποίες αυτοματοποιούνται πολλές διεργασίες - να είναι καλά τα παιδιά του forum - αλλά αυτό είναι κάτι που δεν πάει το μυαλό μου πως μπορεί να γίνει (ούτως ή άλλως από VBA...) Αν βρεθεί τρόπος να γίνει κάτι τέτοιο θα ήθελα και μια πρόταση σχετικά με το πως μπορεί να περαστεί αυτή η διαδικασία, όσο πιο εύκολα γίνεται, σε 450 -480 διαφορετικά φύλλα εργασίας. Ευχαριστώ για τον χρόνο σας. Ελπίζω στην καθοδήγησή σας. |
Καλημέρα σε όλο το forum. Ψάχνοντας στο διαδίκτυο να βρω ιδέες για να λύσω το θέμα μου κατέληξα στον παρακάτω κώδικα: "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim WS_Count As Integer Dim I As Integer WS_Count = ActiveWorkbook.Worksheets.Count For I = 1 To WS_Count If Application.Sheets(I).Range("S22").Value > 18.5 Then Cancel = True MsgBox "Η αποθήκευση ακυρώθηκε." & Chr(13) & "Ο μέσος όρος βαθμολογίας στο μάθημα" & Chr(13) & "είναι πολύ υψηλός." & Chr(13) & "Παρακαλώ επανεξετάστε τους βαθμούς σας." & Chr(13) & "Εκ της Διευθύνσεως." End If Next I End Sub" Σε κάποιες δοκιμές που έχω κάνει φαίνεται να δουλεύει όπως πρέπει. Η μόνη περίπτωση που παρατήρησα να έχει πρόβλημα είναι όταν δεν υπάρχουν βαθμοί στο φύλλο εργασίας - άρα δεν υπάρχει και μέσος όρος - οπότε δεν αφήνει το βιβλίο εργασίας να αποθηκευτεί. Ενώ λογικά θα έπρεπε, αφού η τιμή του κελιού που ελέγχει ο κώδικας είναι κάτω από 18,5 (στην πραγματικότητα δεν υπάρχει τιμή στο κελί αυτό). Μήπως κάποιος μπορεί να βοηθήσει να ξεπεράσουμε αυτό το τελευταίο θέμα; Ευχαριστώ πολύ. |
Καλησπέρα Δοκίμασε τον κώδικα: Κώδικας: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) |
Καλημέρα Γιώργο και σ' ευχαριστώ για την απάντησή σου. Η αποθήκευση του αρχείου προχωράει τώρα κανονικά σε κάθε περίπτωση. Να είσαι καλά και καλή συνέχεια. |
Εφαρμογη λυσης Καλησπερα, επειδη με ενδιαφερει η λυση που προτεινατε θα μπορουσα να το χρησιμοποιησω στο αρχειο μου. Αν καταλαβα καλα, δεν επιτρεπει την αποθηκευση αρχειου αν δεν πληροι καποιες προυποθεσεις τιμων σε κελια |
Καλησπέρα Ο κώδικας δεν επιτρέπει την αποθήκευση, όταν η τιμή στο κελί S22, σε όλα τα φύλλα, δεν ικανοποιεί κάποια συνθήκη. Με κατάλληλη προσαρμογή θα μπορούσες να τον χρησιμοποιήσεις. |
| Η ώρα είναι 18:51. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.