Avatar billede ra110169 Nybegynder
26. februar 2010 - 14:10 Der er 6 kommentarer og
1 løsning

Fjern gem mulighed

Hej eksperter

Jeg har brug for at kunne sørge for at "låse" en excelfil, så brugerne ikke kan gemme den.
De SKAL eksportere den som en XML fil.

Har selv fundet følgende kode:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

If SaveUI = False Then

Cancel = True

MsgBox "FEJL - Du må ikke gemme denne som en fil. Du skal vælge Eksporter fra menuen - Data - XML"

End If

End Sub

Men når jeg sætter den kode ind i et modul, så spærrer jeg jo for at jeg komme til at gemme filen.

Nogen gode ideer?
Avatar billede supertekst Ekspert
26. februar 2010 - 15:23 #1
Du kunne teste på "UserName" - og kun anvende ovenstående kode, hvis dette <> "udvikler"
Avatar billede supertekst Ekspert
26. februar 2010 - 15:24 #2
og så velkommen til....
Avatar billede kabbak Professor
26. februar 2010 - 18:01 #3
stop din kode, ved at markere en linje med en stop prik,( f.eks ved Cancel = True ).
Tryk på diskette for gem nu vil linjen blive markeret med gult og koden er så stoppet.
tryk så igen på disketten og mappen gemmes.

luk det hele ned og hent mappen igen, så skulle den være der.
Avatar billede perhol Seniormester
26. februar 2010 - 19:44 #4
Du kan fjerne muligheden for at gemme med disketteikonet i standard-værktøjslinjen og fra punktet Gem i menuen filer med en Workbook_Open event, samt bruge en BeforeSave event som den du bruger nu.

Hvis du laver rettelser og vil gemme dem, kan du bare 'lukke' filen på lukke-krydset i øverste højre hjørne i programvinduet. Det vil udløse standardspørgsmålet om du vil gemme ændringer. Tryk på ja, og filen gemmes med ændringer.

Det er noget sjusk at fjerne standard menupunkter eller ikoner uden at genindsætte dem når filen lukkes, derfor har du brug for en BeforeClose event der genindsætter dem igen.
Her er mit forslag:

Private Sub Workbook_Open()
    With Application
        .CommandBars("Worksheet Menu Bar").Controls("Filer").Controls("Gem").Enabled = False
        .CommandBars("Standard").Controls(3).Delete
    End With
End Sub


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        Cancel = True
    MsgBox "FEJL - Du må ikke gemme denne som en fil. Du skal vælge Eksporter fra menuen - Data - XML"

    End If
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application
        .CommandBars("Worksheet Menu Bar").Controls("Filer").Controls("Gem").Enabled = True
        .CommandBars("Standard").Reset
    End With
End Sub
Avatar billede perhol Seniormester
26. februar 2010 - 19:46 #5
I stedet for bare en messagebox kan du også kalde en makro der dirigerer brugeren direkte til det ønskede menupunkt.
Avatar billede ra110169 Nybegynder
01. marts 2010 - 09:31 #6
kabbak > Det var jo lige præcis det der skulle til for at få den kode til at virke. Super fedt.

Lægger du et svar, så jeg kan tildele dig point?
Avatar billede kabbak Professor
01. marts 2010 - 16:54 #7
;-))
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