Πώς γίνεται να καταγράφουμε ποιος έκανε τελευταίος τροποποίηση την εγγραφή σε κοινόχρηστο Microsoft Excel

- Πώς επαναφέρουμε μία Oracle Database που βρίσκεται σε archive-log mode με RMAN Restore - 1 Δεκέμβριος 2025
- Πώς μπορούμε να συνδέσουμε SQL Server με άλλον SQL Server με τη χρήση Linked Server - 3 Νοέμβριος 2025
- Πώς απελευθερώνουμε δεσμευμένο χώρο από datafiles / tempfiles μίας βάσης δεδομένων της Oracle - 1 Σεπτέμβριος 2025
Όλοι μας γνωρίζουμε το Microsoft Excel ως ένα από τα βασικότερα και πρώτα προγράμματα που δημιουργήθηκαν για χρήση με γραφικών περιβάλλον στους ηλεκτρονικούς υπολογιστές.
Πολλές φορές έχουμε ένα κοινόχρηστο αρχείο Excel το οποίο το επεξεργάζονται πολλοί χρήστες. Ίσως για κάποιο λόγο χρειαστούμε να κάνουμε audit και να κρατάμε το πότε έγινε μεταβολή η κάθε εγγραφή και από ποιόν χρήστη.
Για να γίνει αυτό θα πρέπει να συλλέξουμε την πληροφορία από το Active Directory μέσω LDAP. Φυσικά είναι προϋπόθεση να χρησιμοποιούμε Active Directory στο δίκτυο μας.
Το παράδειγμα

Πάμε να δούμε πως θα ενεργοποιήσουμε αυτόματα να συμπληρώνονται τα πεδία της μεταβολής και του χρήστη.
Για αρχή πρέπει να ενεργοποιήσουμε το Developer mode αν δεν το έχουμε κάνει ήδη.
Στο Excel – File – Options – Customize Ribbon – κλικ το κουτάκι Developer.

View Code.

Βλέπουμε μας άνοιξε το παράθυρο διαχείρισης του VBA. Εκεί θα εισάγουμε τον παρακάτω κώδικα:
Private Sub Worksheet_Change(ByVal Target As Range)
Set WSHnet = CreateObject("WScript.Network")
username = WSHnet.username
UserDomain = WSHnet.UserDomain
Set objUser = GetObject("WinNT://" & UserDomain & "/" & username & ",user")
UserFullName = objUser.FullName
Dim sUserName As String
Dim xTimeColumn As Integer
Dim xRow, xCol As Integer
Dim xDPRg, xRg As Range
xTimeColumn = 7 'βάζουμε τον αριθμό της κολόνας που θα εμφανίζεται η ώρα μεταβολής
xNColumn = 8 'βάζουμε τον αριθμό της κολόνας που θα εμφανίζεται το όνομα του Χρήστη
xRow = Target.Row
xCol = Target.Column
sUserName = Environ$("username")
If Target.Text <> "" Then
Select Case xCol
Case 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
On Error Resume Next
Set xDPRg = Target.Dependents
For Each xRg In xDPRg
If xRg.Column = xCellColumn Then
'Worksheets("Sheet1").Unprotect "password" 'unlock cells, αν έχουμε βάλει κωδικό για προστασία του αρχείου
Cells(xRow, xTimeColumn) = Now()
'Cells(xRow, xNColumn) = sUserName 'username
Cells(xRow, xNColumn) = UserFullName 'FullName
'Worksheets("Sheet1").Protect "password" 'lock cells, αν έχουμε βάλει κωδικό για προστασία του αρχείου
End If
Next
End Select
End If
Στο πεδίο xTimeColumn βάζουμε τον αριθμό της κολόνας που θα εμφανίζεται η ώρα μεταβολής και στο πεδίο xNColumn βάζουμε τον αριθμό της κολόνας που θα εμφανίζεται το όνομα του χρήστη.
Αφού τοποθετήσουμε τον κώδικα στο φύλλο επιλέγουμε save.

Το αποτέλεσμα
Τώρα θα δούμε με το πάμε να πειράξουμε κάποιο πεδίο πχ τη “Συνολική Τιμή” από 80 σε 90 θα εμφανιστεί η ώρα και το όνομα που έχει δηλωθεί ο χρήστης στο Active Directory.


