Comment définir un retard dans le Script VB pour laisser Excel mise à jour des données

J'ai un fichier Excel qui se charge automatiquement les données à partir d'une base de données externe (via une Connexion de Données à un Accès de base de données qui est, à son tour, liée à une table Sharepoint). J'ai besoin d'automatiser le processus d':

  • de l'ouverture du fichier Excel
  • d'attente pour les données à actualiser
  • l'exécution d'une macro (dans ce fichier)
  • de la fermeture du fichier

Le script que j'ai, c'est:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("excel spreadsheet.xlsm")
WScript.Sleep 1000 * 60 * 5
objExcel.Run "macro_name"
objWorkbook.close False
objExcel.Application.Quit

Cependant, n'importe quel retard j'ai mis en WScript.le sommeil, il ne met pas à jour les données; au lieu de cela, il exécute la macro sur les données déjà dans la feuille de calcul. Quelqu'un pourrait-il aider, s'il vous plaît!


SOLUTION

À la fin (et avec le bénéfice de quelques jours de " live test), la suite semble être le plus propre et le plus efficace:

  1. Retrait de la "WScript.Le sommeil 1000 * 60 * 5" la ligne de la VB script complètement
  2. Dans Excel, de compensation "Activer l'Actualisation en arrière-plan" case à cocher dans les Propriétés de chaque connexion
  3. Ajoutant la ligne suivante à la macro avant le code principal

    ActiveWorkbook.RefreshAll

Un grand merci à Philippe et Santosh pour les réponses ci-dessous me pointer dans la bonne direction!

OriginalL'auteur r-q | 2013-05-23