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

Geforceerd opslaan en afsluiten

Helaas heeft men daar nooit iets aan gedaan :(
 
Inderdaad ;)

Probeer deze eens:
 

Bijlagen

Misschien heb je hier wat aan.
Als je een bestand afsluit wordt eerst gecontroleerd of het bestand al is opgeslagen; zo niet dan wordt het alsnog opgeslagen.
Eén nadeel: als je een bestand niet wilt opslaan (door bijv. foute invoer), moet je het bestand opslaan als bijv "Onzin.xls". Het origineel blijft zo gehandhaafd..

Code:
Sub Auto_Close()
'Plaats die bestand onder Modules
' Voordat het bestand gesloten wordt, wordt het eerst opgeslagen
If ThisWorkbook.Saved = False Then
    MsgBox "Wordt toch opgeslagen"
    ThisWorkbook.Save
    End If
End Sub
 
Waar gaat het nu precies om : bewaren of afsluiten ?

Geen van beiden

Collega’s halen soms data uit de bestanden en vergeten af te sluiten.
De Macro slaat na 20 minuten automatisch op en sluit af zodat andere macro's, HP-VEE scripts en of andere scripts data kunnen toevoegen.
Dat werkt allemaal naar behoren.

Maar nu wil ik toevoegen:
dat er in de laatste 60 seconde een waarschuwing wordt getoond.
Dat is natuurlijk geen probleem.
Het probleem zit hem in afsluiten.
zolang de MsgBox open staat sluit de macro het bestand niet af.
Er zijn 2 opties
1 Excel na 60 seconden geforceerd afsluiten
2 MsgBox na 60 seconden afsluiten
Of een workaround
3 een tabblad zichtbaar/ onzichtbaar maken (oplossing AHulpje)
 
ik heb geen code paraat. maar ipv een msgbox (of tabblad) zou je ook een tekstvak met de waarschuwing kunnen maken.

Op 60 sec maak je het tekstvak zichtbaar. in de opslaan en afsluiten routine verberg je hem weer.

voor de zekerheid zou ik ook bij openen werkmap of activeren tabblad de code zetten om het tekstvak te verbergen.

Aan het tekstvak zou je ook nog weer een annuleren macro kunnen koppelen zodat als de gebruiker op het tekstvak klikt deze verdwijnt en het automatisch afsluiten niet doorgaat.
 
misschien kan onderstaande code het probleem oplossen. Het is slechts als voorbeeld . Ik heb deze code in een aparte standaard module geplaatst. De eerste melding verdwijnt na enige seconden en wordt vervangen door een nieuwe melding tbv het aantonen dat de code doorgaat:
#If VBA7 Then
Private Declare PtrSafe Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" ( _
ByVal hwnd As LongPtr, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long, _
ByVal wLanguageId As Long, _
ByVal dwMilliseconds As Long) As Long

#End If

Sub ToonTijdelijkeMelding()
' Toont een niet-blokkerend bericht dat automatisch verdwijnt
Dim resultaat As Long
resultaat = MessageBoxTimeout(0, "Even geduld...", "Melding", 0, 0, 3000)

' De macro gaat gewoon verder na het tonen
MsgBox "Melding gesloten – macro gaat verder!"
End Sub


run "toonTijdelijkMelding()"
 
Laatst bewerkt:
Nog eentje om te proberen.
MsgBox na 1 min, MsgBox verdwijnt na 55sec en 5 seconden later sluit XL.
 

Bijlagen

Terug
Bovenaan Onderaan