• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Excel Macro starten via Taakplanner

Status
Niet open voor verdere reacties.

Rusty1979

Gebruiker
Lid geworden
8 jul 2009
Berichten
72
Goedemiddag,

In de map K:\Omzetoverzicht nieuw\ heb ik een bestand Omzetoverzicht 2016.xlsm staan met daarin een module MacroTotaal.
In die module staat een macro met de naam import.
Ik loop al een paar dagen te zoeken op internet, maar ik zoek een script dat ik in een vbs bestand (omzetoverzicht.vbs) kan zetten.
Dat vbs bestand wil ik dan door de Windows Taakplanner op een bepaald tijdstip automatisch activeren om de macro import in Omzetoverzicht 2016.xlsm te laten uitvoeren en vervolgens het bestand opslaan en weer sluiten.

Het Taakplanner gedeelte lukt mij wel, maar wie weet welk script ik in het vbs bestand moet zetten?

Zelf had ik dit geprobeerd:
Code:
Set xl = CreateObject("Excel.application")

xl.Application.Workbooks.Open "K:\Omzetoverzicht nieuw\Omzetoverzicht 2016.xlsm"
xl.Application.Visible = True
xl.Application.run "'Omzetoverzicht 2016.xlsm'!import"

xl.application.workbooks.close

Set xl = Nothing
En eigenlijk werkte dit perfect, het enige was dat het script aan het eind vastliep.
Maar de macro was wel goed uitgevoerd en ook het bestand was met de nieuwe wijzigingen opgeslagen.

Blijkbaar is de code niet helemaal goed.

Bij voorbaat hartelijk dank voor jullie hulp.
 
Laatst bewerkt:
Er is niets mis met je niet zichtbare macro. :confused::eek:
 
Laatst bewerkt:
Misschien kun je dit proberen:
Code:
xl.application.workbooks.close False
xl.Quit
 
Misschien kun je dit proberen:
Code:
xl.application.workbooks.close False
xl.Quit

Ik had met jouw suggestie mijn code gewijzigd in:
Code:
Set xl = CreateObject("Excel.application")

xl.Application.Workbooks.Open "K:\Omzetoverzicht nieuw\Omzetoverzicht 2016.xlsm"
xl.Application.Visible = True
xl.Application.run "'Omzetoverzicht 2016.xlsm'!import"

xl.application.workbooks.close False
xl.Quit

Maar ik krijg nu een foutmelding (die kreeg ik ook al bij mijn code), zie bijlage.
En Excel loopt ook vast. Ondanks deze foutmelding en de vastloper heeft de macro wel weer goed gelopen en is ook mijn Excel bestand op de juiste manier opgeslagen.
 

Bijlagen

  • foutmelding.JPG
    foutmelding.JPG
    22,5 KB · Weergaven: 70
Maak er eens dit van:
xl.Application.Quit
 
Waarom zet je de macro niet in de workbook_open gebeurtenis ?

en dan deze code:
Code:
  with getobject("K:\Omzetoverzicht nieuw\Omzetoverzicht 2016.xlsm")

    .close -1
  end with
 
De macro moet alleen 's avonds automatisch gaan lopen en niet elke keer als ik het bestand open, dus dat lijkt me dan niet zo handig.

Wat ik op dit moment als nood-oplossing doe, is na het werk het Excel bestand open laten staan.

En in ThisWorkbook heb ik nu deze macro staan:
Code:
Option Explicit

Private Sub Workbook_Open()

Dim dtmStarttijd As Date
dtmStarttijd = TimeSerial(19, 0, 0)

Application.OnTime dtmStarttijd, "import"

End Sub

Op die manier wordt de macro ook gestart, maar het mooiste zou natuurlijk zijn dat het via het vbs bestand werkt, want dan hoef ik er niet om te denken om het Excelbestand open te laten staan.
 
Met de ontime methode hoef je het bestand niet open te laten staan, Excel wel.

Het lijkt me niet zo moeilijk om in de gebeurteniscode een controle in te bouwen op het tijdstip dat het bestand geopend wordt. Iedere keer als het bestand geopend wordt en het geen 19.00 uur is wordt de rest van de gebeurteniscode niet uitgevoerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan