2017-10-18 4 views
0

J'ai cette sous publique définie dans le module 1 de mon classeur ExcelAppel sous publique chaque jour à une heure précise, sans rouvrir à nouveau le fichier

Public Sub AutoUpdate() 
    Application.OnTime TimeValue("22:40:00"), "GetTime" 
End Sub 

Et dans mon code de classeur que j'ai ceci à appeler cette méthode de mise à jour automatique.

Public Sub Workbook_Open() 
    Call AutoUpdate 
End Sub 

Mon problème est que quand j'ouvrir le fichier il façons le temps d'être 22:40:00 et il appelle "GetTime" mais le lendemain Excel soit plantages ou la fonction ne sont pas appelés à nouveau. Est-ce Application.OnTime method qui fonctionne pour chaque jour sans avoir à rouvrir (actualiser) le classeur à nouveau.

+1

Si vous faites cela pour quelque chose d'important. JUSTE NE LE FAIS PAS. C'est le pire moyen de planifier des tâches. – cyboashu

+0

son important pouvez-vous suggérer comment à alors? –

+2

Une façon serait de créer un script vb pour appeler/exécuter la macro Excel. Puis planifier cette vbs à travers le planificateur de fenêtres. – cyboashu

Répondre

0

Essayez d'utiliser le code suivant:

Private Sub Workbook_Open() 
    Call DailyRun 
End Sub 

Code DailyRun:

Sub DailyRun() 
    Application.OnTime TimeValue("22:40:00"), "GetTime"  
    Application.OnTime TimeValue("23:59:00"), "DailyRun" 
End Sub 

Les DailyRun appels macro se à la fin de chaque jour pour créer un nouvel événement Ontime.

Si vous souhaitez exécuter la macro à l'aide de Windows Planificateur de tâches, ajoutez votre macro classeur événement Open:

Private Sub Workbook_Open() 
    Application.OnTime TimeValue("22:40:00"), "GetTime" 
    Me.Close 
End Sub 

Ne pas oublier de fermer votre classeur.

+0

pourquoi fermer le classeur, je pourrais vouloir encore l'utiliser. –

+0

Si vous souhaitez utiliser votre approche et utiliser le Planificateur de tâches pour ouvrir un fichier tous les jours, vous devez fermer le fichier et laisser le TaskScheduler ouvrir à nouveau le fichier et appeler l'événement Workbook_Open. Si vous ouvrez un fichier qui est déjà ouvert, l'événement Workbook_Open ne sera pas appelé. –

+0

utiliser la première méthode. mais je n'aime pas fermer l'excel puisque je fais des trucs dessus et j'en ai besoin ouvert. –