Avatar billede ponielsen Nybegynder
26. september 2007 - 14:52 Der er 1 kommentar

AutoSave i Excel - Problemer med kode.

Hej

Jeg lavet et tidsregistreringssystem i excel, til brug i en produktionsvirksomhed. For at undgå tab af data vil jeg gerne at regnearket gemmes (ikke auto-recover) med et fast interval. Jeg har fundet nedenstående kode på en anden side på internettet.

Koden fungere grundlæggende fint - den gemmer med et fast interval, som man selv kan angive - det er godt.
PROBLEMET er: når jeg lukker regnearket - MEN ikke lukker Excel-programmet(har et andet regneark åbent) --> Når det fastsatte interval er gået, så åbnes den lukkede fil igen automatisk --> dette er noget uhensigtsmæssigt og ikke mindst forvirrende. Jeg kan ikke finde ud af hvordan jeg får afsluttet nedenstående kode når regnearket lukkes, således den ikke automatisk åbnes igen hver gang der er gået 5 min. (som der er valgt som interval i koden).

Jeg har indsat kode-stumperne som der står i beskrivelsen nedenfor.

I må gerne kommer med en anden kode, hvis I ikke umiddelbart kan tilpasse nedenstående kode.

Håber I kan hjælpe... - på forhånd tak.

------------------------------------

'//Insert the following in the Workbook module

Private Sub Workbook_Open()
    Call Tempo
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call Limpa
End Sub

'//Insert the following in a standard module

Public vartimer As Variant
Const TimeOut = 5 'in minutes

Sub Salva()
    ActiveWorkbook.Save
    Call Tempo
End Sub

Sub Tempo()
    vartimer = Format(Now + TimeSerial(0, TimeOut, 0), "hh:mm:ss")
    If vartimer = "" Then Exit Sub
    Application.OnTime TimeValue(vartimer), "Salva"
End Sub

Sub Limpa()
    On Error Resume Next
    Application.OnTime earliesttime:=vartimer, _
    procedure:="Salva", schedule:=False
    On Error Goto 0
End Sub


-------------------------
Avatar billede kabbak Professor
27. september 2007 - 23:01 #1
prøv denne

Public VarTimer As Date
Const TimeOut = 5    'in minutes

Sub Salva()
    ActiveWorkbook.Save
    Call Tempo
End Sub

Sub Tempo()
    VarTimer = Format(Now + TimeSerial(0, TimeOut, 0), "hh:mm:ss")
    Application.OnTime TimeValue(VarTimer), "Salva"
End Sub

Sub Limpa()
    If VarTimer <> #12:00:00 AM# Then
        Application.OnTime earliesttime:=VarTimer, _
                          procedure:="Salva", schedule:=False
    End If
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester