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

automatisch opslaan in Excel 2010

Status
Niet open voor verdere reacties.

GisenMis

Gebruiker
Lid geworden
21 jun 2015
Berichten
18
Wie kan mij uitleggen waarom automatisch opslaan vanuit VBA alleen maat tijdelijke opslag is en moet bevestigd worden na afsluiten?

Ik heb in een subroutine de volgende code gezet:

ActiveWorkbook.Save

Als ik op het opslaan icoontje click met de muisaanwijzer, en ik sluit Excel af, dan vraagt Excel niets en sluit af, en is alles opgeslagen.
Als ik deze handeling opneem in een Macro, is bovenstaande code de enige code in de Macro.

Zet ik deze code in VBA en laat deze uitvoeren voor ik Excel sluit, dan vraagt Excel toch of ik de veranderingen wil opslaan ??? Is het bestand dan enkel als herstelbestand opgeslagen?

Eigenlijk wil ik een workbook die ik voortdurend gebruik, gewoon telkens er een verandering op een werkblad gebeurt gewoon opslaan via een Routine in VBA die bij elke berekening van het blad wordt uitgevoerd, maar dat gebeurt dus niet. Dus als de stroom uitvalt ... moet je gaan herstellen ???

Bij gebruik van het icoontje gaat het wel.

Hoe los ik dit op? Iemand een idee ...

Thanks ;)
 
Kennelijk zijn er na de opdracht ActiveWorkbook.Save weer wijzigingen.
 
Das Rap

Bedankt voor de vlugge reactie, maar ik denk het niet.

Ik open mijn werkblad,
verander iets,
click op het icoontje en sluit af (zonder de code)
Alles OK

Ik open mijn werkblad,
verander iets,
(met de code)
sluit af en de vraag komt om de wijzigingen op te slaan !!!

Mijn bedoeling is om de handeling van opslaan niet bij alle veranderingen zelf te moeten doen

js
 
Er is weinig van te zeggen zo. Over welk icoontje heb je het? Daarnaast, je laat 1 regeltje zien maar verteld er niet bij of het in een standaard Sub staat of in een Event routine en in het laatste geval welke dan. En wat staat er eventueel nog meer in die routine.

Ik zou het zo doen in de ThisWorkbook sectie:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ActiveWorkbook.Save
End Sub
 
Laatst bewerkt:
Workbook_BeforeClose wordt maar uitgevoerd bij het sluiten van het Workbook, niet tussendoor zolang je werkt, en ook niet bij STROOMUITVAL.

Met het icoontje bedoel ik het opslaan icoontje, de kleine diskette bovenaan , 2de icoontje in Excel

de save opdracht staat als laatste regel in een eigen gemaakte functie routine die regelmatig aangeroepen wordt. Telkens deze functie wordt aangeroepen zou ik willen automatisch opslaan.
Excel doet dit niet, of liever, ik denk dat er een herstelbestand wordt gesaved, maar dat is niet wat ik wil.

Als ik handmatig save door op dat disketje te klikken doet Excel dat wel!
 
Je laat nog steeds niet zien waar je WEL dat regeltje hebt staan.
 
Dit is de functie
Function AantalKeerSpeler(Kolom As Integer, Werkblad As String) As Double
'Johan Slaets april 2015
'Geef in de aanroep van de functie de Kolomindex mee! vb.: voor A 1, voor B 2, ...
'Als tweede parameter geef je de naam van het werkblad: vb. 2013

Application.Volatile (True) 'Zorgt er voor dat bij elke herberekening
'van het werkblad deze functie ook herberekend wordt.

Dim Rij As Integer

AantalKeerSpeler = 0

For Rij = 4 To 103
'Rij is de rijindex op het werkblad
Set curCell = Worksheets(Werkblad).Cells(Rij, Kolom)
'Controleer of de huidige cel niet leeg is
'zo ja tel 1 op bij AantalGespeeld
If curCell = 0 Then GoTo Uit
If curCell <> "" Or curCell <> Null Then _
AantalKeerSpeler = AantalKeerSpeler + 1
Uit:
Next Rij

ActiveWorkbook.Save

End Function
 
Precies.
En de functie geeft een waarde terug aan een cel NADAT ActiveWorkbook.Save is uitgevoerd.
En dus is er weer een wijziging.
 
Laatst bewerkt:
Maar ... de safe opdracht zou dan al moeten uitgevoerd zijn en als ik verschillende wijzigingen doe en dan afsluit en NIET SAVE dan ben ik alles kwijt, ondanks dat mijn workbook misschien wel 10 x de opdracht kreeg om te bewaren
 
Misschien zou dan de laatste save opdracht mogen ontbreken, maar niet de vorige
 
Vanuit een functie maakt het niet uit wanneer je de Save doet. De returnwaarde van de functie aan de cel komt altijd later. Daarom is er dus altijd een wijziging. Een functie is daarom niet de juiste manier om te bereiken wat je wilt.
 
Heb de oplossing,
saveopdracht in worksheet functie calculate geplaatst!
:P
 
Begrijp ik dat je een knop hebt gemaakt die het excel bestand helemaal afsluit en de wijzigingen direct opslaat onder het zelfde bestand?
Ik zou graag een knop willen die die handelingen uitvoert.
Die de functie van het (diskette/save) icoontje en het aflsuiten van het systeem allebei uitvoert.

zou je de formule kunnen laten zien die je gebruikt hebt?

alvast bedankt
 
Neen, ik heb geen knop gemaakt.
Ik heb gewoon een procedure gezet in procedure Change van het werkblad:

Private Sub Worksheet_Change(ByVal Target As Range)
If AantalVeranderingenNAAMWERKBLAD = 5 Then
ActiveWorkbook.Save 'opslaan
AantalVeranderingenNAAMWERKBLAD = 0
Else: AantalVeranderingenNAAMWERKBLAD = AantalVeranderingenNAAMWERKBLAD + 1

End If

End Sub

Het resultaat is dat bij elke 6 de echte verandering (geen berekende verandering) het workbook opgeslagen wordt, zonder dat ik verder iets hoef te doen. Ik wou dit zo om beschermd te zijn tegen stroomuitval. Als je een hele avond zit in te voeren en er gebeurt iets kan je ten hoogste de 5 laatste veranderingen kwijt raken.

Je kan een procedure maken via waar je ActiveWorkbook.Close in zet met de juiste parameters. In die parameters kan je bepalen dat alle veranderingen moeten bewaard worden.
Koppel deze procedure aan een actiebutton en je bent er.
 
Bedankt voor je snelle reactie. Sorry, ik heb niet goed gelezen.

Ik ben opzoek naar een code die mijn excelbestand afsluit en tegelijk opslaat onder het zelfde bestand en bestandstype als het al is (functie van schijf icoontje)
De optie die jij laat zien is handig maar te complex en niet nodig voor mijn systeem.
 
Die code is dus:

ActiveWorkbook.Close (SaveChanges,Filename,RouteWorkbook)
 
Wel vervelend dat elke 5de wijziging dan je undo stack leegmaakt (en dat dat bovendien dan ook nog eens is opgeslagen en je dus helemaal niet meer terug kan!!) :-(
 
Laatst bewerkt:
Als een sprradsheet af is en je hebt alleen gegevens in te vullen dan heb je GEEN undo nodig want die kan je altijd gewoon terug deleten of opnieiw invullen :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan