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

knop opslaan blokkeren

Status
Niet open voor verdere reacties.

vrouw

Terugkerende gebruiker
Lid geworden
27 mrt 2010
Berichten
1.520
Hoi,

Omdat ik een document wil laten opslaan op een door mij aangegeven lokatie heb ik een knop aangemaakt op het document om dat voor elkaar te krijgen met deze code:
Code:
sub test()
ActiveWorkbook.SaveAs [B1] & [J7] & [L7] & ".xls"
end sub

Om ervoor te zorgen dat NIET de opslaan knop van office zelf word gebruikt heb ik ook deze code erin staan:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Deze knop voor opslaan werkt niet"
Cancel = True
End Sub

Nu werkt ook de door mij gemaakte knop/macro voor het opslaan niet meer.:o
 
Misschien heb begrijp ik waar het misgaat: Via het gebruik van ...SaveAs kom je automatisch ook langs ...BeforeSave

Wellicht moet je dus Cancel = False vóór je ...SaveAs actie zetten en Cancel = True er dan weer achter (dus in je eerste stukje code, niet in het tweede).

Ik ben geen Excel deskundig, dus ik neem aan dat er nog wel gebruikers zullen komen die op mijn oplossing commentaar geven. Je kunt allicht even uittesten wat ik schreef op een ongevaarlijk document.

Tijs.
 
Laatst bewerkt:
Je kunt een variabele gebruiken om de macro te laten beslissen of er opgeslagen wordt.
Dat moet dan een publieke variabele zijn;
Die declareer je boven de bovenste sub in de module:

Code:
Public bSwitch As Boolean

Sub test()
     bSwitch = True
     ActiveWorkbook.SaveAs [B1] & [J7] & [L7] & ".xls"
End Sub

Vervolgens lees je deze uit bij de beforesave:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not bSwitch Then
        MsgBox "Deze knop voor opslaan werkt niet"
            Cancel = True      
    End If
bSwitch = False
End Sub

mvg Leo
 
Laatst bewerkt:
Excuus maar ik ben niet helemaal duidelijk geweest.:o

Wat ik in het eerste stukje code liet zien is niet de complete macro
Dus krijg ik het niet voor elkaar om datgene erin te verwerken wat je voorstelde met die Public bSwitch As Boolean

Dit is de gehele macro voor het opslaan:
Code:
Sub test()
Range("J7").Select
   If [J7] > 0 Then
   Response = MsgBox("Heb je de juiste maand ingevuld ??", vbYesNo + vbQuestion, waarschuwing)
   If Response = vbNo Then Exit Sub
   ElseIf MsgBox("Je hebt de maand niet ingevuld !!", vbCritical, waarschuwing) = vbOK Then Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs [B1] & [J7] & [L7] & ".xls"
End Sub
 
Excuus maar ik ben niet helemaal duidelijk geweest.:o

Wat ik in het eerste stukje code liet zien is niet de complete macro
Dus krijg ik het niet voor elkaar om datgene erin te verwerken wat je voorstelde met die Public bSwitch As Boolean

Het stukje Public bSwitch As Boolean moet helemaal bovenaan in de module komen te staan. Als er nog meer subs in de module zitten maakt niet uit als de regel Public bSwitch As Boolean maar helemaal bovenaan staat.

Code:
Public bSwitch as Boolean

Sub test()
Range("J7").Select
   If [J7] > 0 Then
   Response = MsgBox("Heb je de juiste maand ingevuld ??", vbYesNo + vbQuestion, waarschuwing)
   If Response = vbNo Then Exit Sub
   ElseIf MsgBox("Je hebt de maand niet ingevuld !!", vbCritical, waarschuwing) = vbOK Then Exit Sub
End If
Application.DisplayAlerts = False
bSwitch = True
ActiveWorkbook.SaveAs [B1] & [J7] & [L7] & ".xls"
End Sub
 
Thanks, dat is het helemaal:love:

Ik heb nu alleen nog wel steeds dat het bestand niet op de juiste plaats word opgeslagen.
Het is de bedoeling dat dat gebeurd in de map waar het ook geopend is dmv de regel:
ActiveWorkbook.SaveAs [B1] & [J7] & [L7] & ".xls"

Ik kan er niet hard een lokatie aangeven omdat de gebruikers het op verschillende plaatsen opslaan.
 
Met
Code:
ThisWorkbook.Path
Is de directory van map op te vragen waar het werkboek in is opgeslagen.

Bij een nieuw aangemaakt werkboek gaat dat fout, daar deze dan a.h.w. zwevende is en eerst een keer opgeslagen moet worden.

mvg Leo
 
Is de directory van map op te vragen waar het werkboek in is opgeslagen.

Hoe bedoel je dat?

Wat ik wel heb gedaan is het bestand dat gebruikt word, op alleen lezen gezet bij de eigenschappen om te voorkomen dat het word overschreven.
 
Ervan uitgaande dat de bestandsnaam gevormd wordt uit deze cellen:
Code:
[B1] & [J7] & [L7] & ".xls"

Wordt de complete naam met directory:

Code:
ThisWorkbook.SaveAs ThisWorkbook.Path & "/" & [B1] & [J7] & [L7] & ".xls"
 
Helemaal Toppie.

Bedankt voor alle hulp.:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan