Excel taulukon suojauksen poistaminen

Välillä vastaan tulee Excel-tiedostoja, joiden sisältö on suojattu siten, että kenttien laskentakaavoja ei näe, ja että vain tiettyjen kenttien sisältöä voi muokata.

Tällaiselle suojaamiselle on hyvät perusteet, esimerkiksi matkalaskulomakkeessa. Käyttäjän tarvitsee täyttää tietyt kentät, eikä muuhun tarvitse koskea. Suojaus estää tahattomien muutosten tekemisen, kun kaikkien kenttien sisältöä ei pääse muokkaamaan.

Syystä tai toisesta, edellisen työpaikan käyttämän kirjanpitotoimiston toimittamissa matkalaskulomakkeissa oli ainakin kahtena eri vuonna virheitä. Esimerkiksi matkustajan kilometrit laskettiin täysin väärin (summattiin eri päivien matkustajamäärät yhteen, sama tehtiin kilometreille, ja näiden lopputulos kerrottiin keskenään). Välillä lomakkeissa oli käytössä väärät kilometrikorvaus tai päiväraha summat. Lomakkeet eivät myöskään taipuneet ulkomaanpäivärahoihin.

Näin keskeneräistä ja testaamatonta tekelettä, josta pyydetään vielä rahaa, ei koskaan pitäisi päästää ulos. Vaikka lomakkeessa oli virheitä, oli se muutoin kuitenkin ihan asiallinen. Lomake jäi käyttöön, vaikka tilitoimisto vaihtui. Tällaista lomaketta pystyy käyttämään vain vuoden loppuun, sillä verottaja päivittää korvauksien suuruuksia vuosittain.

Vastaavan lomakkeen voisi tehdä helposti itsekin, mutta pelkkien eurojen päivittämisen takia tämä tuntuu vähän turhalta.

Pienellä pätkällä Visual Basic -koodia, on mahdollista ’selvittää’ salasana, jolla taulukon suojauksen saa poistettua. VB koodi ei murra alkuperäistä salasanaa, se vain etsii sellaisen merkkijonon, joka toimii suojauksen poistamiseen. Tällä tavoin selvitetyt koodit ovat kirjaimellisesti muotoa AAAAAAAAAAA, AAAAAAABBBB, AAAABBBBBCC jne.

Excelin lukitus ei siis ole mikään hienostunein. Täten Excelillä ei kannata tehdä mitään Top Secret juttuja, mikäli tarkoituksena on myös jaella tiedostoa.

Salasanan selvittäminen

Alla oleva koodi ei ole itseni keksimä, vaan se löytyy monesta paikkaa internetin syövereistä.

Koodin käyttö tapahtuu seuraavasti:

1. Avaa VBA editori painamalla Alt + F11 avonaisessa Excel-asiakirjassa, jonka taulun suojauksen haluat poistaa.

2. Tupla klikkaa taulukkoa ikkunan vasemmalla laidalla, jonka suojauksen haluat poistaa. Tässä esimerkissä poistetaan Taulun 11 suojaus. Suojauksen poistaminen tällä metodilla pitää tehdä jokaiselle taululle erikseen.

3. Lisää alla oleva koodi oikealle puolelle avautuneeseen ikkunaan

Sub Passwordbreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim il As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For il = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(il) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(il) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

4. Koodin lisäämisen jälkeen, paina vihreää ’play’ painiketta (tai paina F5). Pian tämän jälkeen ilmestyy salasana, jota voi käyttää asiakirjan suojauksen poistamiseen.

Suojauksen poistaminen

Asiakirjan suojaus poistetaan valitsemalla Tarkista => Poista taulukon suojaus, ja syöttämällä salasanakentän äsken saatu salasana.

Huomaathan, että tämä VB -koodi täytyy suorittaa jokaiselle taululle erikseen. Esimerkkitiedostossa on 13 taulua, joten koodi pitää ajaa kullekin taululle salasanan selvittämiseksi, ja vielä erikseen poistaa suojaukset kultakin taululta löytynyttä salasanaa käyttäen.

PS. Mikäli tämä kikka ei toiminut (syystä tai toisesta välillä näin käy), voit kokeilla myös toista tapaa.

3 thoughts on “Excel taulukon suojauksen poistaminen

  1. Itselle kävi juuri niin että olen unohtanut suojaamani excelin salasanan. Olen suojannut muutamalla sheetillä solut, ettei kaavoja pääse söhlimään. Nyt en pääse itse päivittämään ko. exceliä, koska unohdus. Yritin avata suojauksen em. laittamillasi ohjeilla, mutta VBA on pyörittänyt makroa jo 50min eikä se anna pikkuikkunalla uutta merkkijonoa.

  2. Hei. Syystä jota en tiedä, niin tuo koodin laskeminen ei joka kerta onnistu. Minullekin on käynyt näin mm. Silloin kun ensimmäistä kertaa yritin ottaa kuvakaappaukset juttua varten. Kannattaa siis sulkea excel ja yrittää uudelleen. Jos on mahdollista, niin voi kokeilla myös toista tietokonetta. Kannattaa myös varmistaa, että koodi on varmasti kokonaisuudessa kopioitu, minullakin taisi ihan ensimmäistä kertaa kokeillessa jäädä joku merkki alusta tai lopusta uupumaan. Jos tiedosto ei ole salainen, niin voit lähettää sen minulle purettavaksi.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

This site uses Akismet to reduce spam. Learn how your comment data is processed.