• 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.

na macro niet meer opslaan

  • Onderwerp starter Onderwerp starter ninc
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ninc

Gebruiker
Lid geworden
20 sep 2006
Berichten
65
Ik heb een macro en ik wil dat na het uitvoeren van die macro het niet meer mogelijk is om het bestand op te slaan op wat voor manier dan ook. Je zult het dan moeten afsluiten.

Weet iemand hier de code voor? Ik kan het nergens vinden, en wat ik vind is niet voor mijn situatie toepasbaar. De opslaan en opslaan als functie moeten dus uitgeschakeld worden na het uitvoeren van een bepaalde macro.
 
Ninc, Wat denk je van zoiets?
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    MsgBox "Opslaan is niet mogelijk!" & Chr(13) & _
            "Het bestand wordt nu onopgeslagen afgesloten!", _
            vbOKOnly, "Save error"
    Me.Close savechanges:=False

End Sub
(ongeteste code)

Hou er wel rekening mee dat je dit ff uitschakeld als je zelf belangrijke wijzigingen in je bestand hebt aangebracht. Hmmm.... ik zit me nu dus af te vragen hoe je in vredesnaam deze code moet opslaan... Hij werkt zichzelf namelijk tegen!:confused::confused:

Groet, Leo
 
...Maar zo werkt 't wel!:D
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    If Application.InputBox("Geef password...", "PW", "******", , , , , 2) = "hallo" Then Exit Sub
    
    MsgBox "Opslaan is niet mogelijk!" & Chr(13) & _
            "Het bestand wordt nu onopgeslagen afgesloten!", _
            vbOKOnly, "Save error"
    Me.Close savechanges:=False

End Sub
Je krijgt nu eerst een inputbox voor je neus waar je een password moet opgeven (in het voorbeeld: hallo). Heb je een fout password dan ga je de rest van de procedure in en wordt het workbook onopgeslagen gesloten. Als het pw goed is, wordt het bestand netjes gesaved.

Groet, Leo
 
Hey, alvast bedankt voor je snelle antwoorden!

Hoe moet ik de code invoeren bij de andere macro? Het moet eigenlijk zo zijn dat wanneer de macro is uitgevoert dat je nog steeds kunt printen etc, maar dat je niet kunt opslaan. Ook niet via snel opslaan.

Oh, en als ik dit excel bestand op een andere pc wil starten dan doen de macro's het niet omdat er een code 400 error is. Dit heb ik ook bij sommige versies van mijn excel bestand, sommige werken anderen niet. Heb ik de macro soms verkeerd opgeslagen>? Ik dacht wanneer je opslaat dat de macro in het bestand zit.
 
Ninc zei:
Hoe moet ik de code invoeren bij de andere macro?
Deze code staat op zichzelf en wordt alleen aangeroepen als je probeert te saven.
een code 400 error
Gebruik je meerdere versies van Excel? En op welke regel klapt de code dan?
Ik dacht wanneer je opslaat dat de macro in het bestand zit.
Dat lijkt mij ook!

Groet, Leo
 
Oh ik had het blad beveiligd. Nu werkt het wel. Maar ik wil dat het pas geactiveerd wordt nadat een bepaalde macro is gebruikt. Door het gebruik van de macro veranderd de opmaak en dat mag dan niet opgeslagen worden. Dus zou het ook kunnen dat de het opslaan pas na de macro kan worden geactiveerd?

Nu moet je steeds bij het opslaan een wachtwoord invoeren.

Thanx.
 
Oh ik had het blad beveiligd. Nu werkt het wel. Maar ik wil dat het pas geactiveerd wordt nadat een bepaalde macro is gebruikt. Door het gebruik van de macro veranderd de opmaak en dat mag dan niet opgeslagen worden. Dus zou het ook kunnen dat de het opslaan pas na de macro kan worden geactiveerd?

Nu moet je steeds bij het opslaan een wachtwoord invoeren.

Thanx.


Wat je kan doen om dit probleem op te lossen is twee globale variabelen definiëren, bv. met de namen AllowSaving en AllowSavingOverruling. Beide kunnen als boolean gedeclareerd worden.

AllowSaving zet je in de open sectie van je workbook op TRUE, dan mag je immers nog opslaan. Wanneer je de macro hebt uitgevoerd zet je hem op FALSE (dit kan je bv. doen op de laatste regel van die macro). Vervolgens vang je in bovenstaande code van Ginger de waarde van AllowSaving op, en wanneer deze TRUE is mag je opslaan, en bij FALSE niet.

De variabele AllowSavingOverruling gaat het passwoord vervangen. Je zet die waarde standaard op False, maw je gaat dan kunnen opslaan op basis van de waarde van de eerdere variabele AllowSaving. AllowSavingOverruling ga je pas gebruiken wanneer jij wil dat na het uitvoeren van de macro het bestand toch moet worden opgeslagen worden, bv. wanneer jij als beheerder van de file een nieuwe versie maakt die toch de macro uitgevoerd wilt zien worden en ook die wijzigingen willen kunnen opslaan. De waarde AllowSavingOverruling zet je in een aparte procedure op TRUE wanneer jij dat wenst. De gewone gebruikers kunnen deze macro niet uitvoeren.
In de code van Ginger doe je dus eerst een Check op basis van AllowSavingOverruling en dan checken naar de waarde van AllowSaving. Op die manier moet jouw probleem op te lossen zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan