Hvordan lage en makro som utfører periodisk i Excel?

stemmer
7

Hvordan gjør man utføre noen VBA-kode med jevne mellomrom, fullstendig automatisert?

Publisert på 17/10/2008 klokken 08:54
kilden bruker
På andre språk...                            


4 svar

stemmer
1

Det er en påføringsmetode som kan brukes for timing arrangementer. Hvis du vil at dette skal skje med jevne mellomrom må du 'reload' timeren etter hver gjennomføring, men det bør være ganske grei.

Sub MyTimer()
   Application.Wait Now + TimeValue("00:00:05")
   MsgBox ("5 seconds")
End Sub

-Adam

Svarte 17/10/2008 kl. 09:06
kilden bruker

stemmer
12

Du kan bruke Application.OnTime å planlegge en makro som skal utføres med jevne mellomrom. For eksempel skaper en modul med koden nedenfor. Ring "Aktiver" for å starte tidtakeren kjører.

Det er viktig å stoppe timeren kjører når du lukker arbeidsboken: å gjøre det håndtere Workbook_BeforeClose og kaller "Disable"

Option Explicit

Private m_dtNextTime As Date
Private m_dtInterval As Date

Public Sub Enable(Interval As Date)
    Disable
    m_dtInterval = Interval
    StartTimer
End Sub

Private Sub StartTimer()
    m_dtNextTime = Now + m_dtInterval
    Application.OnTime m_dtNextTime, "MacroName"
End Sub

Public Sub MacroName()
    On Error GoTo ErrHandler:
    ' ... do your stuff here

    ' Start timer again
    StartTimer
    Exit Sub
ErrHandler:
    ' Handle errors, restart timer if desired
End Sub

Public Sub Disable()
    On Error Resume Next ' Ignore errors
    Dim dtZero As Date
    If m_dtNextTime <> dtZero Then
        ' Stop timer if it is running
        Application.OnTime m_dtNextTime, "MacroName", , False
        m_dtNextTime = dtZero
    End If
    m_dtInterval = dtZero
End Sub

Alternativt kan du bruke Win32 API SetTimer / KillTimer fungerer på samme måte.

Svarte 17/10/2008 kl. 09:18
kilden bruker

stemmer
0

Du kan vurdere Windows Task Scheduler og VBScript.

Svarte 17/10/2008 kl. 10:02
kilden bruker

stemmer
0

Jeg gjør dette hele tiden, jeg pleide å bruke "OnTime" -metoden som vist ovenfor, men det gjør maskinen du kjører koden på ubrukelig til andre ting, fordi Excel kjører 100% av tiden. I stedet bruker jeg en modifisert skjult arbeidsbok og jeg kjøre med Windows Task Scheduler og i Thisworkbook workbook_open funksjonen kaller makro fra din personlige arbeidsbok, eller åpne og kjøre en annen arbeidsbok med koden i den. Etter at koden har kjørt kan du ringe application.quit funksjon fra skjulte arbeidsbok og nær ecxel for neste kjøring gjennom. Jeg bruker det for alt mitt på 15 minutt og daglig ubetjente rapporteringsfunksjoner.

Svarte 23/12/2008 kl. 16:09
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more