Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Excel07] Ξεκλείδωμα προστατευμένων κελιών (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/264-ksekleidoma-prostateymenon-kelion.html)

Chris 04-12-09 15:02

Ξεκλείδωμα προστατευμένων κελιών
 
Γεια σας παιδια
Θελω να ρωτησω αν μπορουμε να ξεκλειδωσουμε προσταευεμενα κελια αν δεν εχουμε τον κωδικο . Υπαρχει κανεισ τροπος;

Χρηστος

Tasos 04-12-09 15:55

Αγαπητέ Χρήστο,
Για να ανακτήσεις τον χαμένο κωδικό του Βιβλίου εργασίας ή απλά να τον αφαιρέσεις, θα πρέπει να κοιτάξεις στο Internet εμπορικά προγράμματα που κάνουν τη δουλειά αυτή.
Αν πρόκειται για αφαίρεση (όχι ανάκτηση) κωδικού ενός Φύλλου εργασίας, μπορεί να χρησιμοποιηθεί ο παρακάτω κώδικας:


Σε ένα κοινό Module επικολλούμε τον παρακάτω κώδικα που αφαιρεί τον κωδικό από το ενεργοποιημένο φύλλο:
Κώδικας:

'ΠΡΟΣΟΧΗ!! Συνιστάται μόνο για ιδιόκτητα Excel φύλλα!
Option Explicit
Sub GetPass()
    Const a = 65, b = 66, c = 32, d = 126
    Dim i#, j#, k#, l#, m#, n#, o#, p#, q#, r#, s#, t#
    With ActiveSheet
        If .ProtectContents Then
            On Error Resume Next
            For i = a To b
                For j = a To b
                    For k = a To b
                        For l = a To b
                            For m = a To b
                                For n = a To b
                                    For o = a To b
                                        For p = a To b
                                            For q = a To b
                                                For r = a To b
                                                    For s = a To b
                                                        For t = c To d
            .Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & _
            Chr(n) & Chr(o) & Chr(p) & Chr(q) & Chr(r) & Chr(s) & Chr(t)
                                                        Next t
                                                    Next s
                                                Next r
                                            Next q
                                        Next p
                                    Next o
                                Next n
                            Next m
                        Next l
                    Next k
                Next j
            Next i
            MsgBox "Finished"
        End If
    End With
End Sub

Ο χρόνος που θα χρειαστεί εξαρτάται κατά ένα μεγάλο ποσοστό από την ισχύ του υπολογιστή.

Φιλικά

Τάσος

Chris 04-12-09 20:28

Τάσο σε ευχαριστω θα το δοκιμάσω,

Χρηστος

Chris 06-12-09 17:48

Τασο σε ευχαριστώ πολυ το δοκιμασα και δουλεψε τελεια.

Tasos 06-12-09 18:34

Νάσαι καλά φίλε μου!
Τα λέμε

Τάσος

nisgia 07-12-09 12:08

Γεια σας και από μένα!

Με την ευκαιρία να υπενθυμίσω πως έχουμε τη δυνατότητα να "κλέψουμε"
τα δεδομένα ενός προστατευμένου φύλλου με την εξής εντολή:

Κώδικας:

ActiveSheet.Cells.Value = Sheets(1).Cells.Value
Όπου Sheets(1) το προστατευμένο φύλλο.
Φυσικά τη θέση του ActiveSheet μπορεί να πάρει οποιοδήποτε φύλλο θέλουμε.

Φιλικά, Γιάννης

Μάριος 07-12-09 15:45

Θα "κλέψεις" απλώς τιμές όμως έτσι? όχι τύπους ή συναρτήσεις ή μορφοποίηση, ε?

Tasos 07-12-09 17:23

Μάριε, καλησπέρα και καλωσόρισες στο φόρουμ!
Θα μπορούσε να γίνει ακόμα έτσι:

Κώδικας:

Option Explicit

Sub CopyUsedRange()
    Dim x$
    x = Sheets(1).UsedRange.Address
    Sheets(1).Range(x).Copy ActiveSheet.Range(x)
End Sub

Με εκτίμηση

Τάσος

nisgia 08-12-09 00:44

Παράθεση:

Αρχική Δημοσίευση από Μάριος (Μήνυμα 937)
Θα "κλέψεις" απλώς τιμές όμως έτσι? όχι τύπους ή συναρτήσεις ή μορφοποίηση, ε?

Φυσικά μόνο τις τιμές.
Άλλωστε αυτό φαίνεται και από την ρητή αναφορά στην ιδιότητα Value της ιδιότητας Cells.
Όμως, με την παρακάτω εντολή "κλέβεις" και όλα τα υπόλοιπα που ανέφερες::wink:

Κώδικας:

Sheets(1).UsedRange.Copy ActiveSheet.Cells(1)
Γενικά, ο κώδικας VBA μπορεί να παρακάμψει την προστασία ενός φύλλου
αρκεί να μην αναπαράγει ενέργειες που θα έκανε ο χρήστης μέσω της οπτικής διασύνδεσης(UI).

Μάριος 08-12-09 17:06

Δοκίμασα να τρέξω σε προστατευμένο φύλλο τον κώδικα Sub CopyUsedRange()
αλλά μου βγάζει Run Time error 1004

Tasos 08-12-09 18:57

Καλησπέρα και πάλι.
Όπως είπε ο Γιάννης:
Παράθεση:

Γενικά, ο κώδικας VBA μπορεί να παρακάμψει την προστασία ενός φύλλου
αρκεί να μην αναπαράγει ενέργειες που θα έκανε ο χρήστης μέσω της οπτικής διασύνδεσης(UI).
Το φύλλο στο οποίο θα επικολληθούν τα δεδομένα μέσω του συγκεκριμένου κώδικα
θα πρέπει:
  • Να είναι ενεργοποιημένο
  • Να μην είναι προστατευμένο

ΥΓ. Έκτός από το Run Time error 1004, το μήνυμα σου γράφει συνήθως τι μπορεί να προκάλεσε το σφάλμα.:wink:

Μάριος 10-12-09 08:43

Σωστά, αλλά αυτό που "υποκλέπτει" είναι τιμές όχι και τύποι... Σωστά?

Tasos 10-12-09 09:47

Καλημέρα Μάριε,
εξαρτάται από τον κώδικα που χρησιμοποιείς δηλ.

Αν χρησιμοποιείς Sheets(1).Range(x).Copy αντιγράφεις όλη την περιοχή με τις τιμές, τους τύπους, τις μορφές και ότι ανήκει σ αυτήν.

Αν πάλι χρησιμοποιείς περιοχή2.Value = περιοχή1.Value τότε παίρνεις τις τιμές μόνο.


Η ώρα είναι 03:06.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2