VBS wachten totdat programma volledig is afgesloten

Status
Niet open voor verdere reacties.

Tweety1

Gebruiker
Lid geworden
6 mrt 2013
Berichten
637
Ik ben voor het eerst een VBS script aan het schrijven en loop tegen het volgende aan.
De eerste 3 access bestanden gaan goed alleen loopt het script vast bij het 4e bestand.
De melding die ik krijg in access is "Kan bestand niet gebruiken. Het bestand is al in gebruik".
Bestand 4 wordt namelijk gevuld door bestand 3.
Is het mogelijk om te wachten tot dat het bestand volledig is afgesloten?

Code:
dim accessApp
set accessApp = createObject("Access.Application")
accessApp.visible = False
accessApp.UserControl = False
accessApp.OpenCurrentDataBase("C:\Temp\Bestand1.accdb")
accessApp.Run "Refresh"
accessApp.Quit
set accessApp = nothing

set accessApp = createObject("Access.Application")
accessApp.visible = Fasle
accessApp.UserControl = False
accessApp.OpenCurrentDataBase("C:\Temp\Bestand2.accdb")
accessApp.Run "Refresh"
accessApp.Quit
set accessApp = nothing

set accessApp = createObject("Access.Application")
accessApp.visible = False
accessApp.UserControl = False
accessApp.OpenCurrentDataBase("C:\Temp\Bestand3.accdb")
accessApp.Run "Refresh"
accessApp.Quit
set accessApp = nothing

set accessApp = createObject("Access.Application")
accessApp.visible = Fasle
accessApp.UserControl = False
accessApp.OpenCurrentDataBase("C:\Temp\Bestand4.accdb")
accessApp.Run "Refresh"
accessApp.Quit
set accessApp = nothing

set accessApp = createObject("Access.Application")
accessApp.visible = Fasle
accessApp.UserControl = False
accessApp.OpenCurrentDataBase("C:\Temp\Bestand5.accdb")
accessApp.Run "Refresh"
accessApp.Quit
set accessApp = nothing

mvg
Kasper
 
Erg onhandige code, lijkt mij. Om te beginnen: waarom steeds opnieuw Access opstarten? Eén keer opstarten lijkt mij genoeg, want dan kun je daarin steeds de volgende database laden. Dan krijg je iets als:
Code:
Dim accessApp
     Set accessApp = createObject("Access.Application")
     accessApp.visible = False
     accessApp.UserControl = False
     accessApp.OpenCurrentDataBase("C:\Temp\Bestand1.accdb")
     accessApp.Run "Refresh"
[B][COLOR="#FF0000"]     accessApp.CloseDatabase("C:\Temp\Bestand1.accdb")[/B][/COLOR]
     accessApp.OpenCurrentDataBase("C:\Temp\Bestand2.accdb")
     accessApp.Run "Refresh"
[B][COLOR="#FF0000"]     accessApp.CloseDatabase("C:\Temp\Bestand2.accdb")[/B][/COLOR]
     accessApp.OpenCurrentDataBase("C:\Temp\Bestand3.accdb")
     accessApp.Run "Refresh"
[B][COLOR="#FF0000"]     accessApp.CloseDatabase("C:\Temp\Bestand3.accdb")[/B][/COLOR]
     accessApp.OpenCurrentDataBase("C:\Temp\Bestand4.accdb")
     accessApp.Run "Refresh"
[B][COLOR="#FF0000"]     accessApp.CloseDatabase("C:\Temp\Bestand4.accdb")[/B][/COLOR]
     accessApp.OpenCurrentDataBase("C:\Temp\Bestand5.accdb")
     accessApp.Run "Refresh"
[B][COLOR="#FF0000"]     accessApp.CloseDatabase("C:\Temp\Bestand5.accdb")[/B][/COLOR]
     accessApp.OpenCurrentDataBase("C:\Temp\Bestand6.accdb")
     accessApp.Run "Refresh"
[B][COLOR="#FF0000"]     accessApp.CloseDatabase("C:\Temp\Bestand6.accdb")[/B][/COLOR]
     Set accessApp = Nothing

De rode regels zijn 'dummycode' omdat ik niet precies weet wat het juiste commando is om een database te sluiten, maar die weet je vast zelf wel.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan