Help bij code met timer voor het automatisch afsluiten van een Excel workbook

Status
Niet open voor verdere reacties.

LosArrogantes

Gebruiker
Lid geworden
7 mei 2015
Berichten
18
Eerst en vooral wil ik al meedelen dat ik een leek ben met het coden in VBA...

Ik moet dus een Workbook maken die ik automatisch wil laten sluiten na 1 minuut.
De code met timer heb ik reeds en deze werkt perfect.
Dit is de code die ik heb in ThisWorkbook :

Code:
Private Sub Workbook_Open()
ThisWorkbook.Sheets("DATABASE").Activate
ActiveSheet.Range("A1").Select
    EndTime = Now + TimeValue("00:01:00")
    RunTime
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If EndTime Then
        Application .OnTime _
        EarliestTime:=EndTime, _
        Procedure:="CloseWB", _
        Schedule:=False
        EndTime = Empty
    End If

    EndTime = Now + TimeValue("00:01:00")
    RunTime
End Sub

En deze code heb ik in mijn module:
Code:
Public EndTime

Sub RunTime()
    Application.OnTime _
    EarliestTime:=EndTime, _
    Procedure:="CloseWB", _
    Schedule:=True
End Sub
 
Sub CloseWB()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub

Nu zou ik dus het volgende willen laten stampen juist voor bovengaande macro men workbook laat sluiten :
Code:
Sheets("DATABASE").Range("B43").Value = Date
Sheets("DATABASE").Range("B44").Value = Time
Sheets("DATABASE").Range("B45").Value = Application.UserName 'Stamp the current user name
    Application.EnableEvents = False
    ThisWorkbook.Save
    Application.EnableEvents = True
ThisWorkbook.Sheets("DATABASE").Activate
ActiveSheet.Range("A1").Select

De bedoeling is dus dat dit ENKEL gebeurd wanneer de macro na het verlopen van de tijd dit uitvoert, wat ik nu krijg is dat hij dit doet wanneer ik men woorkbook open, en toch staat die niet in men open sub...

Graag een beetje hulp die zeker gewaardeerd zal worden! ;-)

Bedankt!
 
Laatst bewerkt:
Volgens mij doet dit wat je wil.

Code:
Sub CloseWB()
    Sheets("DATABASE").Range("B43").Value = Date
    Sheets("DATABASE").Range("B44").Value = Time
    Sheets("DATABASE").Range("B45").Value = Application.UserName 'Stamp the current user name
    Application.EnableEvents = False
    ThisWorkbook.Save
    Application.EnableEvents = True
    ThisWorkbook.Sheets("DATABASE").Activate
    ActiveSheet.Range("A1").Select
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub
 
Als je iets wilt doen voordat het workbook sluit dan kun je daarvoor het Workbook_BeforeClose event benutten.
In dat event moet je ook de timer beëindigen. Als je dat niet doet zal de timer het workbook weer opnieuw openen (om het vervolgens af te sluiten).
 
Wel neen, hij opent het werkboek totaal niet...

In feite daar ligt het probleem ook totaal niet...

Het probleem is dat ik wil dat wanneer de timer het werkboek sluit eerst nog die stamp doet...

Voor de rest werk die timer perfect! ;-)

Tevens heb ik die stamp code in het Workbook_BeforeClose event gestoken, en dit werkt wel wanneer ik manueel het workbook sluit, maar niet wanneer het via de timer gebeurd...
 
Laatst bewerkt:
Volgens mij doet dit wat je wil.

Code:
Sub CloseWB()
    Sheets("DATABASE").Range("B43").Value = Date
    Sheets("DATABASE").Range("B44").Value = Time
    Sheets("DATABASE").Range("B45").Value = Application.UserName 'Stamp the current user name
    Application.EnableEvents = False
    ThisWorkbook.Save
    Application.EnableEvents = True
    ThisWorkbook.Sheets("DATABASE").Activate
    ActiveSheet.Range("A1").Select
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub


Bedankt!

Dit was dus de oplossing! ;-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan