Suojausongelma

Kyynikko

Onko kenelläkään tarjota koodia seuraavanlaiseen suojauspulmaan. Hallinnoin päivittäin täytettävää jaettua tiedostoa, mutta ongelmaksi on tullut se, että taulukkoon aiemmin lisättyjä tietoja on voitu käyttäjän toimesta muuttaa.

Olisi tarve saada automaattisesti (makrolla?) tallennuksen yhteydessä suojattua rivit, joille on jo tehty merkintöjä.
Onnistuukohan?

9

703

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • jaettu tiedosto

      Moi!
      Tutustu excelin jaettu asiakirjan ominaisuuksiin,
      sen voi suojata salasanalla ja jäljittää muutokset.

      • Kyynikko

        Selvennän! Taulukkoa täydennetään eri työpisteissä. Pulmana on mahdollisuus poistaa (tahattomasti!?) edellisten tekemiä merkintöjä. Muutosloki kyllä paljastaa muutokset, mutta se ei estä niitä. Siksi olisi kätevää saada merkinnät suojattua tavallisen tallennuksen yhteydessä.

        Olen kokeillut makroa, joka sen tekee, mutta se edellyttää suojattavan alueen valitsemista ennen makron suorittavan tallennusnappulan painallusta. Se ei siis riitä.


      • miten on ?
        Kyynikko kirjoitti:

        Selvennän! Taulukkoa täydennetään eri työpisteissä. Pulmana on mahdollisuus poistaa (tahattomasti!?) edellisten tekemiä merkintöjä. Muutosloki kyllä paljastaa muutokset, mutta se ei estä niitä. Siksi olisi kätevää saada merkinnät suojattua tavallisen tallennuksen yhteydessä.

        Olen kokeillut makroa, joka sen tekee, mutta se edellyttää suojattavan alueen valitsemista ennen makron suorittavan tallennusnappulan painallusta. Se ei siis riitä.

        Valaise lisää,

        Se mitä päivittäin täydennetään

        Moneenko soluun käyttäjä täydentää ?

        Yksi mahdollisuus on tehdä lomakkeesta mallipohja, ja siitä vban avulla kopioidaan nimetyt solut jotka liitetään "raporttiin". Raportti tallennettuna kansioon johon vain sinulla on poisto-oikeus. Muut pääsevät vain lukemaan sitä muttei muokkaamaan.


      • Kyynikko
        miten on ? kirjoitti:

        Valaise lisää,

        Se mitä päivittäin täydennetään

        Moneenko soluun käyttäjä täydentää ?

        Yksi mahdollisuus on tehdä lomakkeesta mallipohja, ja siitä vban avulla kopioidaan nimetyt solut jotka liitetään "raporttiin". Raportti tallennettuna kansioon johon vain sinulla on poisto-oikeus. Muut pääsevät vain lukemaan sitä muttei muokkaamaan.

        Taulukkoa siis täydennetään siten, että työntekijät merkitsevät rivi riviltä päiväyksen ja kymmenkunta tapahtumaa, joista kuukausittain tehdään yhteenveto. Se, että samaa tiedostoa täyttää useampi työntekijä, kasvattaa riskiä virheellisiin toimintoihin, joista katalin on toisen työntekijän tekemien merkintöjen poisto. Siksi olisi hyvä saada täydennetty rivi suojattua tallennuksen yhteydessä.


      • Kyynikko kirjoitti:

        Taulukkoa siis täydennetään siten, että työntekijät merkitsevät rivi riviltä päiväyksen ja kymmenkunta tapahtumaa, joista kuukausittain tehdään yhteenveto. Se, että samaa tiedostoa täyttää useampi työntekijä, kasvattaa riskiä virheellisiin toimintoihin, joista katalin on toisen työntekijän tekemien merkintöjen poisto. Siksi olisi hyvä saada täydennetty rivi suojattua tallennuksen yhteydessä.

        poista ensiksi taulukosta (nyt Sheet1) kaikkien solujen lukitus ja suojaa VBA projekti salasanalla. Tallenna sitten työkirja normaalisti ja siinäpä se...

        oletuksena, että A sarakkeeseen tulee aina tieto, muuta sopivaksi

        ThisWorkbook moduuliin...

        Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim vika As Integer
        On Error Resume Next
        Sheets("Sheet1").Unprotect Password:="Kunde"
        vika = Range("A65536").End(xlUp).Row
        Range("A1:A" & vika).EntireRow.Locked = True
        Sheets("Sheet1").Protect Password:="Kunde"
        End Sub


      • ohjetta
        Kyynikko kirjoitti:

        Taulukkoa siis täydennetään siten, että työntekijät merkitsevät rivi riviltä päiväyksen ja kymmenkunta tapahtumaa, joista kuukausittain tehdään yhteenveto. Se, että samaa tiedostoa täyttää useampi työntekijä, kasvattaa riskiä virheellisiin toimintoihin, joista katalin on toisen työntekijän tekemien merkintöjen poisto. Siksi olisi hyvä saada täydennetty rivi suojattua tallennuksen yhteydessä.

        No koitetaan pidemmän kaavan kautta.

        1. luo sellaiselle verkkoasemalle kansio, johon kaikilla käyttäjillä pääsy.
        2. anna kansion nimeksi vaikka DATA.
        3. muokkaa kansion ominaisuuksista security kohdasta, siten että itselläsi ja pääkäyttäjällä täydet oikeudet. Poista everyone käyttäjä ja luo uusi everyone, jolle täpät ruuduissa; READ&EXECUTE, LIST FOLDER CONTENTS, READ.
        4. luo xls. tiedosto esim. RAPORTTI. ja tallenna se äsken luomaasi DATA kansioon.
        5. luo template (mallipohja) muotoinen tiedosto, joka tulee olemaan se jota kaikki täyttävät. Eli eivät näe mitä aikaisemmin täytetty vaan täydentävät ainostaan omat tietonsa.
        6. seuraava pätkä vban moduuliin tohon luomaasi template tiedostoon.
        Sub luoraportti()

        Range("A1").Select
        ActiveCell.FormulaR1C1 = "=TODAY()"

        Range("A1").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

        Dim Nimi As String
        Dim Mitä As String
        Dim Missä As String
        Dim Milloin As String
        Dim Koska As String
        Dim Päiväys As Date
        Dim Oletuskansio As String

        Nimi = Range("A3")
        Mitä = Range("B3")
        Missä = Range(”C3”)
        Milloin = Range("D3")
        Koska = Range("E3")
        Päiväys = ActiveCell.Value
        Oletuskansio = "F:\?????\Data"

        If Nimi = "" Then

        MsgBox "Syötä nimi soluun B3"

        Else

        ChDir Oletuskansio
        Workbooks.Open Filename:=Oletuskansio & "\Raportti.xls"
        Range("A2").Select
        Selection.EntireRow.Insert

        Range("A2").Select
        ActiveCell.FormulaR1C1 = Nimi & "_" & Mitä & "_" & Missä & "_" & Milloin & "_" & koska & "_" & Päiväys

        Range("A1").Select
        Application.CutCopyMode = False

        MsgBox "Lisätty rivi 2, solu A2 = " & Nimi & "_" & Mitä & "_" & Missä & "_" & Milloin & "_" & Koska & "_" & Päiväys

        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Range("A1").Select

        End If

        End Sub

        7. MUOKKAA EDELLISTÄ, oletuskansio kohtaan jossa edellä F:\ laita oikea polku.
        kuka, mitä miksi jne. voit itse lisätä siten että riittävät sulle.
        8. Luo painike template tiedostoon, jolla käyttäjä suorittaa makron.

        9. ja sitä mallipohjaa et tallenna samaan kansioon, siis se minkä oikeudet olet muokannut.

        - Kaino -


      • Kyynikko
        kunde kirjoitti:

        poista ensiksi taulukosta (nyt Sheet1) kaikkien solujen lukitus ja suojaa VBA projekti salasanalla. Tallenna sitten työkirja normaalisti ja siinäpä se...

        oletuksena, että A sarakkeeseen tulee aina tieto, muuta sopivaksi

        ThisWorkbook moduuliin...

        Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim vika As Integer
        On Error Resume Next
        Sheets("Sheet1").Unprotect Password:="Kunde"
        vika = Range("A65536").End(xlUp).Row
        Range("A1:A" & vika).EntireRow.Locked = True
        Sheets("Sheet1").Protect Password:="Kunde"
        End Sub

        Ilmeisesti olen ilmaissut itseäni huonosti, sillä valitettavasti antamasi koodi ei vastannut tarvettani. Siitä voi silti olla hyötyä jossain muuussa tapauksessa, ja sain ainakin lisäoppia koodin sijoittamisesta.

        Kerron taulukostani, joka on siis jaettuna yhteisellä resurssilla. Taulukon solut A1:R5 ja sarakkeet B, O ja P ovat sellaisia, joihin ei ole muilla asiaa, ja ne olen suojannut salasanalla. Riviltä kuusi alkaen taulukkoa täydennetään rivin ollessa yksi tietue. Tietueiden määrää ei ole rajoitettu, mutta olen varautunut tuhanteen riviin värittämällä alueen A6:R1006.

        Taulukko tuntuu toimivan muuten hyvin, mutta se on altis vahingoittumaan, sillä aikaisemmin täydennetyt rivit jäävät ilman suojaa.

        Siksi haluaisin, että jokainen täytetty rivi tulisi suojattua (salasanalla) tallennuksen yhteydessä. Tuon tarjoamasi koodin perusteella olettaisin, että se voisi olla jopa mahdollista.

        Oma VBA-taitoni rajoittuu toistaiseksi vielä nauhoitettujen ja muiden tekemien koodien modifiointiin. Tämän palstan ansiosta siitäkin on ollut jo paljon iloa :)

        Kansioiden oikeuksiin minulla ei ole puuttumista, joten haluan pysyä yksinkertaisemmassa ratkaisussa.


      • Kyynikko kirjoitti:

        Ilmeisesti olen ilmaissut itseäni huonosti, sillä valitettavasti antamasi koodi ei vastannut tarvettani. Siitä voi silti olla hyötyä jossain muuussa tapauksessa, ja sain ainakin lisäoppia koodin sijoittamisesta.

        Kerron taulukostani, joka on siis jaettuna yhteisellä resurssilla. Taulukon solut A1:R5 ja sarakkeet B, O ja P ovat sellaisia, joihin ei ole muilla asiaa, ja ne olen suojannut salasanalla. Riviltä kuusi alkaen taulukkoa täydennetään rivin ollessa yksi tietue. Tietueiden määrää ei ole rajoitettu, mutta olen varautunut tuhanteen riviin värittämällä alueen A6:R1006.

        Taulukko tuntuu toimivan muuten hyvin, mutta se on altis vahingoittumaan, sillä aikaisemmin täydennetyt rivit jäävät ilman suojaa.

        Siksi haluaisin, että jokainen täytetty rivi tulisi suojattua (salasanalla) tallennuksen yhteydessä. Tuon tarjoamasi koodin perusteella olettaisin, että se voisi olla jopa mahdollista.

        Oma VBA-taitoni rajoittuu toistaiseksi vielä nauhoitettujen ja muiden tekemien koodien modifiointiin. Tämän palstan ansiosta siitäkin on ollut jo paljon iloa :)

        Kansioiden oikeuksiin minulla ei ole puuttumista, joten haluan pysyä yksinkertaisemmassa ratkaisussa.

        samat ohjeet edelleen...
        eli poista taulukosta kaikkien solujen lukitukset ja tallenna työkirja. Muista suojata VBA koodi myös salasanalla.

        lisätty sarakkeet suojaukseen ja lukitusrivin alku nyt riviltä 6. Helppo lisätä tohon uusia lukittavia soluja

        Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim vika As Integer
        On Error Resume Next
        Sheets("Sheet1").Unprotect Password:="Kunde"

        Range("A1:R5").Locked = True
        Columns("B:B").Locked = True
        Columns("O:O").Locked = True
        Columns("P:P").Locked = True
        vika = Range("A65536").End(xlUp).Row
        If vika > 5 Then
        Range("A6:A" & vika).EntireRow.Locked = True
        End If
        Sheets("Sheet1").Protect Password:="Kunde"
        End Sub


      • Kyynikko
        kunde kirjoitti:

        samat ohjeet edelleen...
        eli poista taulukosta kaikkien solujen lukitukset ja tallenna työkirja. Muista suojata VBA koodi myös salasanalla.

        lisätty sarakkeet suojaukseen ja lukitusrivin alku nyt riviltä 6. Helppo lisätä tohon uusia lukittavia soluja

        Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim vika As Integer
        On Error Resume Next
        Sheets("Sheet1").Unprotect Password:="Kunde"

        Range("A1:R5").Locked = True
        Columns("B:B").Locked = True
        Columns("O:O").Locked = True
        Columns("P:P").Locked = True
        vika = Range("A65536").End(xlUp).Row
        If vika > 5 Then
        Range("A6:A" & vika).EntireRow.Locked = True
        End If
        Sheets("Sheet1").Protect Password:="Kunde"
        End Sub

        Tuo homma toimi hienosti, kunnes jaoin tiedoston. Ilmeisesti pitäisi poistaa jako tallennuksen ajaksi, mutta siitä tullee ilmoituksia käyttäjälle. Se ei käy päinsä. Kokeilin jaon poistamista ja palauttamista nauhoitetulla koodilla, mutta siitä tuli vain ongelmia.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. IL - PerSut tykittää - Vaaralliset tappajat vankilaan jopa loppuelämäksi!!

      Entistä rajumpi elinkautinen tulee – Vaaralliset tappajat vankilaan jopa loppuelämäksi Henkirikosten uusijat voidaan ja
      Maailman menoa
      162
      22119
    2. Some kuhisee Sanna Marinista: "Wau"

      Sanna Marinia hehkutetaan. Muun muassa Jodelissa kommentoidaan The Sunday Timesin julkaisemaa kuvaa Marinista. Hän ant
      Maailman menoa
      65
      8716
    3. Äärioikeistopurran nukke Petteri Lapanen paniikissa

      Kun Suomen historian paras pääministeri antoi vankan lausunnon, kuinka "keskustelu politiikassa on käpertynyt lähinnä va
      Maailman menoa
      64
      6192
    4. SIELTÄ SE TULI: Kepu-Kurvinen: "Emme enää lähde punavihreään hallitukseen"

      Nyt muuten nauretaan loppuviikko, että tähänkö kaatui Lindtmanin pääministerihaaveet. "Antti Kurvisen mukaan puolue ei
      Maailman menoa
      178
      5802
    5. Onko rajojen kiinnipitäminen ihmisoikeuksien vastaista?

      Maahanmuutosta puhutaan usein niin kuin kyse olisi vain numeroista ja rajoista. Kyse on kumminkin ihmisistä, jotka halua
      Maahanmuutto
      314
      5252
    6. Täysi ryöpytys Sanna Marinille ulkomailla.

      https://www.iltalehti.fi/ulkomaat/a/f699d84f-fa53-4dba-8718-2c395017fc55 Sanna Marinin kirja saa todella tylyn vastaanot
      Maailman menoa
      29
      4816
    7. HS - Sanna Marinin kirja on priimaluokan vedätys!

      Kirja-arvio|Toivo on tekoja tulisi ensisijaisesti nähdä maineen rahallisen hyödyntämisen voimaannuttavana merkkipaaluna.
      Maailman menoa
      79
      4422
    8. Minja Koskelan "istumista" kertovassa uutisessa ei sanottu persuista mitään

      eli jälleen kerran äärivasemmistolainen valehtelee, hän kun väittää että juuri persut ovat lähetelleet Koskelalle vähemm
      Maailman menoa
      81
      4230
    9. "Rauhanomainen" miekkari hesassa: "Eläköön aseellinen vastarinta" - lakana

      Kyseessä on Suomen Palestiinalaisten yhdistyksen viime perjantaina järjestämä ”Hiljainen kynttiläkulkue Palestiinalaiste
      Maailman menoa
      115
      3750
    10. Sannalla tänään vuorossa The Daily Show

      Eli nyt mennään jo satiirin puolelle. Tuohan on vähän kuten Lindströmin ohjelma Suomessa.
      Maailman menoa
      17
      2292
    Aihe