Avatar billede lineriber Praktikant
18. januar 2011 - 10:49 Der er 6 kommentarer og
1 løsning

Spærre for at kunne gemme excelfil

Hej eksperter

Jeg har lavet et regneark der skal bruges som beregningsværktøj i vores organisation.
Der ligger en hel del formler i regnearket og jeg har derfor selvfølgelig låst de felter der ikke må redigeres/indtastes værdier i.

De bagvedliggende data der ligger i regnearket, skal løbende opdateres (flere gange om måneden). Derfor er det vigtigt af brugerne at de altid får fat i den nyeste version af regnearket.
Jeg har desværre bare dårlig erfaring med, at brugerne gemmer værktøjet ned på deres egen computer fx på skrivebordet, og bruger det derfra - og så får de jo ikke de nyeste opdaterede data med!

Mit spørgsmål er derfor: kan man på en eller anden måde spærre for at andre kan gemme filen med et nyt navn og på en ny placering, så jeg sikre mig at der kun findes én variant af dette regneark?

Mvh
Line
Avatar billede gnowak Nybegynder
18. januar 2011 - 12:50 #1
Du kan lave en blokering via lidt VBA-kode, som undersøger hvilken placering arket har. Hvis arket ikke har den rette placering kan der komme en fejl på skærmen, hvorefter regnearket evt. lukkes.

VH. GrN.dk
Avatar billede finb Ekspert
18. januar 2011 - 13:19 #2
Og gnowak´s vba kan udbygges med, at den, der forsøgte at gemme forkert logges, og skal give kage.

Det lyder som en spøg, men det virker !

mvh finb
Avatar billede gnowak Nybegynder
18. januar 2011 - 13:22 #3
God idé finb :-)
Avatar billede lineriber Praktikant
18. januar 2011 - 13:56 #4
Uha det lyder som en god ide.
Så mangler jeg bare en venlig sjæl der vil skrive den VBA kode for mig ;-)

Jeg vil gerne at brugeren der prøver at gemme filen et hvilket som helst sted, får følgende fejl:
"You dont have permission to save the fil"
Dvs. at brugeren heller ikke må gemme filen på den aktuelle placering.

Hvis det kan lade sig gøre, vil jeg også gerne have en logning af hvem der har forsøgt at gemme filen samt dato og tidspunkt.

Der er kun et par enkelte personer der må gemme ændringer i denne fil, så det skal jo løses på en eller anden måde evt med noget kodeindtastning eller lignende.....?

Håber der er en der er frisk på at skrive koden til mig :-)
Avatar billede lineriber Praktikant
21. januar 2011 - 18:54 #5
Er der ikke nogen der kan hjælpe med en VBA kode der kan klare ovenstående problem??
Avatar billede finb Ekspert
22. januar 2011 - 10:08 #6
Har ikke tid, men se dette tidl. indlæg til din/andres inspiration:

"Kan jeg forhindre rename af worksheet

----------------------------------------------------------

Oprettet man. d. 17. januar 2011 kl. 09:38:18 30 point uddelt | 9 kommentarer folj (7.390 point. Point ude: 0)
 
Kan jeg forhindre rename af worksheet
Hej Eksperter...

Jeg har en workbook kørende med menge forskellige brugere.
Der er tilknyttet en makro der automatisk opretter et nyt ark hver uge ud fra en worksheet der hedder "Skabelon". Hvis en af brugerne finder på at omdøbe arket skabelon, så vil makroen fejle derefter.

spørgsmålet:
Kan jeg på nogen måde forhindre at denne woeksheet("Skabelon") omdøbes - evt. kan jeg nøjes med en msgbox der gør opmærksom på at automatikken er afhængig af at den hedder "skabelon" og ikke andent.

kan den oplysning, at den i project-træet hedder "Sheet42(Skabelon)" evt. udnyttes til at kontrollere at den hedder det rigtige?

Venter spændt på svar...
 
---------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 12:32:27| #1 newbieatphp (3.605 point) Hvis brugerne ikke selv skal have mulighed for at ændre navne på arkene, så har du mulighed for at sætte projektmappebeskyttelse på.

Dette gør, at man ikke kan slette eller indsætte ark, og man kan ikke ændre navnene på arkene.

Når du så skal kører din makro for at kopiere skabelon, så fjerne du projektmappebeskyttelsen:

ActiveWorkbook.Unprotect

Og sætter den til efter alt er kørt igennem:

ActiveWorkbook.Protect Structure:=True, Windows:=False


hvis du vil have kode på, så brugeren ikke så "nemt" kan komme til at fjerne det, så hedder det:

ActiveWorkbook.Protect Password:="din kode", Structure:=True, Windows:=False

ActiveWorkbook.Unprotect Password:="din kode"

--------------------------------------------------------------------------------

Skrevet man. d. 17. januar 2011 kl. 13:41:20| #2 folj (7.390 point) Er det ikke tænkeligt at oplysningen, om at den i project-træet hedder "Sheet42(Skabelon)" kan udnyttes til at kontrollere om den bliver omdøbt?
 

--------------------------------------------------------------------------------

Skrevet man. d. 17. januar 2011 kl. 13:50:43| #3 newbieatphp (3.605 point) Hvad vil du have den til at gøre, hvis det bliver ændret?
 

--------------------------------------------------------------------------------

Skrevet man. d. 17. januar 2011 kl. 14:02:46| #4 folj (7.390 point) jeg vil gerne lave en msgbox der popper op...
 

--------------------------------------------------------------------------------

Skrevet man. d. 17. januar 2011 kl. 14:44:46| #5 newbieatphp (3.605 point) Jeg kan ikke finde noget direkte på, at når der bliver ændret arknavn. Men har sat den til at tjekke når arket bliver aktivt, inaktivt og der bliver ændret i arket.

Private Sub Worksheet_Activate()
    Dim navn As String
    navn = "Skabelon"
    If Not Sheets(42).Name = navn Then
        MsgBox "Du har ændret navnet på arket", vbCritical, "Arket har fået nyt navn"
        'Sheets(42).Name = navn
    End If
End Sub
Private Sub Worksheet_Deactivate()
    Dim navn As String
    navn = "Skabelon"
    If Not Sheets(42).Name = navn Then
        MsgBox "Du har ændret navnet på arket", vbCritical, "Arket har fået nyt navn"
        'Sheets(42).Name = navn
    End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim navn As String
    navn = "Skabelon"
    If Not Sheets(42).Name = navn Then
        MsgBox "Du har ændret navnet på arket", vbCritical, "Arket har fået nyt navn"
        'Sheets(42).Name = navn
    End If
End Sub


Denne kode skal ind under selve arket... Ark 42
 

--------------------------------------------------------------------------------

Skrevet man. d. 17. januar 2011 kl. 21:39:40| #6 anlu (5.730 point)
www.anlu.dk Hvis dit problem bare er at du i koden refererer til Worksheets("Skabelon"), så kan du i stedet referere til det interne navn som er sheet42.

Fx
  Sheet42.Range("A1").value = 1
i stedet for
  Worksheets("Skabelon").Range("A1").Value = 1

etc.

Og du kan også ændre det interne navn til at være noget mere sigende, jeg plejer at bruge prefixet ws, fx wsSkabelon. Du ændrer det interne navn i properties-arket, som du får vist ved at trykke F4 eller "View->Properties Window" i menuen.

Når du så klikker på dit skabelon-sheet kan du se i properties-vinduet at (Name) er lig Sheet42, hvilket du blot kan ændre til fx wsSkabelon.

Dette løser selvf. kun dit problem, hvis ikke du bruger "Skabelon"-navnet til andet end at referere til det specifikke worksheet.
 

----------------------------------------------------------------------
Avatar billede lineriber Praktikant
28. februar 2011 - 11:57 #7
Jeg lukker spørgsmålet pga manglende svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester