Olen aiemmin esittänyt tavan poistaa Excel taulukon solujen suojauksen Visual Basic koodin avulla. Ajoittain tämä ei kuitenkaan syystä tai toisesta toimi.
On olemassa toinenkin tapa, jolla suojauksen saa poistettua. Tämä vaihtoehto ei vaadi koodin ajamista, mutta paria kikkaa ja tekstieditoria. Mikäli Excelin avaamien on suojattu salasanalla, ei tästä kikasta ole hyötyä.
On vaikea sanoa, kumpi näistä vaihtoehdoista on helpompi toteuttaa. Uusi tapa oikein toteutettuna on varmatoiminen solujen suojauksen poistamiseksi, eikä koneella tarvitse suorittaa tuntematonta koodia.
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.
Contains information related to marketing campaigns of the user. These are shared with Google AdWords / Google Ads when the Google Ads and Google Analytics accounts are linked together.
90 days
__utma
ID used to identify users and sessions
2 years after last activity
__utmt
Used to monitor number of Google Analytics server requests
10 minutes
__utmb
Used to distinguish new sessions and visits. This cookie is set when the GA.js javascript library is loaded and there is no existing __utmb cookie. The cookie is updated every time data is sent to the Google Analytics server.
30 minutes after last activity
__utmc
Used only with old Urchin versions of Google Analytics and not with GA.js. Was used to distinguish between new sessions and visits at the end of a session.
End of session (browser)
__utmz
Contains information about the traffic source or campaign that directed user to the website. The cookie is set when the GA.js javascript is loaded and updated when data is sent to the Google Anaytics server
6 months after last activity
__utmv
Contains custom information set by the web developer via the _setCustomVar method in Google Analytics. This cookie is updated every time new data is sent to the Google Analytics server.
2 years after last activity
__utmx
Used to determine whether a user is included in an A / B or Multivariate test.
18 months
_ga
ID used to identify users
2 years
_gali
Used by Google Analytics to determine which links on a page are being clicked
30 seconds
_ga_
ID used to identify users
2 years
_gid
ID used to identify users for 24 hours after last activity
24 hours
_gat
Used to monitor number of Google Analytics server requests when using Google Tag Manager
1 minute
Marketing cookies are used to follow visitors to websites. The intention is to show ads that are relevant and engaging to the individual user.
A video-sharing platform for users to upload, view, and share videos across various genres and topics.
Registers a unique ID on mobile devices to enable tracking based on geographical GPS location.
1 day
VISITOR_INFO1_LIVE
Tries to estimate the users' bandwidth on pages with integrated YouTube videos. Also used for marketing
179 days
PREF
This cookie stores your preferences and other information, in particular preferred language, how many search results you wish to be shown on your page, and whether or not you wish to have Google’s SafeSearch filter turned on.
10 years from set/ update
YSC
Registers a unique ID to keep statistics of what videos from YouTube the user has seen.
Session
DEVICE_INFO
Used to detect if the visitor has accepted the marketing category in the cookie banner. This cookie is necessary for GDPR-compliance of the website.
179 days
LOGIN_INFO
This cookie is used to play YouTube videos embedded on the website.