• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Save optie aan /uit via VBA

Status
Niet open voor verdere reacties.

martijnsw

Gebruiker
Lid geworden
7 nov 2006
Berichten
52
Hallo,

Ik heb een Excel document gemaakt waar meerdere mensen in gaan werken.
Het is de bedoeling dat niemand de mogelijkheid heeft om het bestand te saven.

Echter word er in het document via een userform data ingevoerd en op de juiste plek gezet.
Nu wil ik dat het bestand zich automatisch saved na het drukken op OK.

Dus wat moet ie doen:

Bij openen doc: Disable save/Save as

Bij drukken op OK: Enable Save / Save doc / disable Save

Wie heeft hier een goede code voor?

Alvast bedankt,

Martijn
 
Onderstaande code schakelt de menu-items uit alsook het diskette-icoon
Code:
Private Sub Workbook_Open()
Dim Ctrl As Office.CommandBarControl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=3)
        Ctrl.Enabled = False
    Next Ctrl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=748)
        Ctrl.Enabled = False
    Next Ctrl
End Sub

Voor de slimmerikken die het willen proberen via F12
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then
MsgBox "De 'SaveAs' functie is uitgeschakeld." & Chr(10) & "Enkel opslaan via het formulier.", vbInformation, "SaveAs uitgeschakeld"
Cancel = True
End If
End Sub

Dan via opdrachtknop opslaan bv
Code:
Private Sub CommandButton1_Click()
    ThisWorkbook.SaveAs "D:\Mijn documenten\Test2.xls"
End Sub

En alles terug herstellen voor het afsluiten
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Ctrl As Office.CommandBarControl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=3)
        Ctrl.Enabled = True
    Next Ctrl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=748)
        Ctrl.Enabled = True
    Next Ctrl
End Sub
 
Als je ervoor zorgt dat bij het openen van het bestand meteen het userform wordt geopend, kan de gebuiker Save niet gebruiken.
Als je er ook voor zorgt dat het bestand meteen wordt gesloten als het userform wordt gesloten kan er helemaal niets mis gaan.
Dan hoef je geen basisvoorzieningen in Excel uit te schakelen.
En het wordt helemaal foolproof als je de gegevens die met het userform worden ingevoerd niet in hetzelfde bestand wegschrijft als het bestand met het userform.
 
Laatst bewerkt:
Onderstaande code schakelt de menu-items uit alsook het diskette-icoon

Code:
Private Sub Workbook_Open()
Dim Ctrl As Office.CommandBarControl
For Each Ctrl In Application.CommandBars.FindControls(ID:=3)
Ctrl.Enabled = False
Next Ctrl
For Each Ctrl In Application.CommandBars.FindControls(ID:=748)
Ctrl.Enabled = False
Next Ctrl
End Sub

Deze is bijna goed.
Ik kan inderdaad niet meer saven.

Het probleem is echter dat het nu voor alle workbooks is uitgeschakeld.
Zelfs na het sluiten van alle office applicaties kan ik na het starten van excel geen enkel bestand meer via de save knop opslaan.

Ik ben op zoek naar de code waarmee ik alleen het werkboek beveilig tegen saven waarin de code staat.

Kan dit?
 
martijnsw,

Als je het stukje code "Workbook_BeforeClose" van Warme bakkertje erbij gebruikt?
Die zet alles weer op normaal zoals hij schrijft.

En alles terug herstellen voor het afsluiten

Code:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Ctrl As Office.CommandBarControl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=3)
        Ctrl.Enabled = True
    Next Ctrl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=748)
        Ctrl.Enabled = True
    Next Ctrl
End Sub
 
Laatst bewerkt:
:)

Die was ik er vergeten bij te zetten.

Werkt inderdaad goed.
Bedankt voor de oplossing.

Echter kwam er toch nog een vraag naar boven.
Is het ook mogelijk om het zo in te stellen dat je terwijl je in het ene werkboek bezig bent waar deze code in staat, de andere workboeken toch de rechten te geven om te saven?

Mijn collega's werken namelijk met veel sheets tegelijk enkel de sheet war deze code in moet komen wordt enkel gebruikt als tool.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan