it-swarm.com.de

Festlegen des wiederkehrenden Zeitplans für die xlsm-Datei mit Windows Task Scheduler

Ich habe eine xlsx-Makro-aktivierte Datei. Wie kann ich es im Task-Manager so einstellen, dass der Task-Manager täglich um 9 Uhr die Arbeitsmappe öffnet, das Makro auslöst und die Arbeitsmappe schließt.

Bisher verwende ich 

Application.OnTime . . .

Ich stelle jedoch fest, dass es unbequem ist, die xlsm-Datei offen zu halten 

8
Andrei Vasilev

Verwenden Sie am besten ein vbs wie angegeben

  1. Erstellen Sie eine einfache vbs, bei der es sich um eine Textdatei mit der Erweiterung .vbs handelt (siehe Beispielcode unten).
  2. Verwenden Sie den Taskplaner, um die vbs auszuführen.
  3. Verwenden Sie die vbs, um die workbook zum geplanten Zeitpunkt zu öffnen, und dann entweder:
    • verwenden Sie das Private Sub Workbook_Open()-Ereignis im ThisWorkbook-Modul, um Code auszuführen, wenn die Datei geöffnet wird
    • robuster (da Makros beim Öffnen deaktiviert werden können), verwenden Sie Application.Run in der vbs, um das Makro auszuführen

Dieses Beispiel des späteren Ansatzes finden Sie unter Ausführen von Excel unter Windows Task Scheduler

sample vbs 

Dim ObjExcel, ObjWB
Set ObjExcel = CreateObject("Excel.application")
'vbs opens a file specified by the path below
Set ObjWB = ObjExcel.Workbooks.Open("C:\temp\rod.xlsm")
'either use the Workbook Open event (if macros are enabled), or Application.Run

ObjWB.Close False
ObjExcel.Quit
Set ObjExcel = Nothing
11
brettdj

Ich habe auf einen Blog von Kim verwiesen, der das gemacht hat und es funktioniert gut für mich. Siehe den Blog

Die automatisierte Ausführung des Makros kann mit Hilfe einer VB - Skriptdatei ausgeführt werden, die zu bestimmten Zeiten vom Windows Task Scheduler aufgerufen wird. 

Denken Sie daran, "YourWorkbook" durch den Namen der Arbeitsmappe zu ersetzen, die Sie öffnen möchten, und "YourMacro" durch den Namen des Makros, das Sie ausführen möchten.

Siehe die Skriptdatei VB (nannte sie einfach RunExcel.VBS):

    ' Create a WshShell to get the current directory
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")

' Create an Excel instance
Dim myExcelWorker
Set myExcelWorker = CreateObject("Excel.Application") 

' Disable Excel UI elements
myExcelWorker.DisplayAlerts = False
myExcelWorker.AskToUpdateLinks = False
myExcelWorker.AlertBeforeOverwriting = False
myExcelWorker.FeatureInstall = msoFeatureInstallNone

' Tell Excel what the current working directory is 
' (otherwise it can't find the files)
Dim strSaveDefaultPath
Dim strPath
strSaveDefaultPath = myExcelWorker.DefaultFilePath
strPath = WshShell.CurrentDirectory
myExcelWorker.DefaultFilePath = strPath

' Open the Workbook specified on the command-line 
Dim oWorkBook
Dim strWorkerWB
strWorkerWB = strPath & "\YourWorkbook.xls"

Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)

' Build the macro name with the full path to the workbook
Dim strMacroName
strMacroName = "'" & strPath & "\YourWorkbook" & "!Sheet1.YourMacro"
on error resume next 
   ' Run the calculation macro
   myExcelWorker.Run strMacroName
   if err.number <> 0 Then
      ' Error occurred - just close it down.
   End If
   err.clear
on error goto 0 

oWorkBook.Save 

myExcelWorker.DefaultFilePath = strSaveDefaultPath

' Clean up and shut down
Set oWorkBook = Nothing

' Don’t Quit() Excel if there are other Excel instances 
' running, Quit() will shut those down also
if myExcelWorker.Workbooks.Count = 0 Then
   myExcelWorker.Quit
End If

Set myExcelWorker = Nothing
Set WshShell = Nothing

Sie können dieses VB Skript über die Eingabeaufforderung testen:

>> cscript.exe RunExcel.VBS

Nachdem Sie die VB - Skriptdatei und die Arbeitsmappe getestet haben, damit sie das tut, was Sie möchten, können Sie mit Microsoft Task Scheduler (Systemsteuerung -> Verwaltung -> Task Scheduler) 'cscript.exe RunExcel ausführen. vbs 'automatisch für dich.

Bitte beachten Sie, dass der Pfad des Makros im richtigen Format und in Anführungszeichen stehen sollte:

strMacroName = "'" & strPath & "\YourWorkBook.xlsm'" & 
"!ModuleName.MacroName"
4
rchacko

Code kopiert von -> Hier

Zunächst müssen Sie Ihr Arbeitsbuch als makroaktiviertes Arbeitsbuch speichern. Es müsste also xlsm sein und keine xlsx. Andernfalls deaktiviert Excel die Makros, da sie nicht makroaktiviert sind. 

Legen Sie Ihr VBScript fest (C:\Excel\tester.vbs). Das Beispielunter "test ()" muss sich in Ihren Modulen im Excel-Dokument befinden. 

dim eApp
set eApp = GetObject("C:\Excel\tester.xlsm")
eApp.Application.Run "tester.xlsm!test"
set eApp = nothing

Legen Sie dann Ihren Zeitplan fest, geben Sie ihm einen Namen und einen Benutzernamen/ein Kennwort für den Offlinezugriff. 

Dann müssen Sie Ihre Aktionen und Auslöser einstellen. 

Legen Sie Ihren Zeitplan fest (Auslöser)

Set your trigger

Aktion, stellen Sie Ihr vbscript so ein, dass es mit Cscript.exe geöffnet wird, so dass es im Hintergrund ausgeführt wird und nicht durch eine Fehlerbehandlung aufgehängt wird, die von vbcript aktiviert wurde.

Action Properties

3
Rich

Drei wichtige Schritte - Vorgehensweise beim Planen einer Excel.xls (m) -Datei

einfach :

  1. stellen Sie sicher, dass die VBS-Datei korrekt ist
  2. legen Sie die Registerkarte Aktion in Taskplaner richtig fest 
  3. nicht einschalten "Ausführen, ob Benutzer angemeldet ist oder nicht"

GENAUER...

  1. Hier ist eine Beispieldatei .vbs :

`

'   a .vbs file is just a text file containing visual basic code that has the extension renamed from .txt  to .vbs

'Write Excel.xls  Sheet's full path here
strPath = "C:\RodsData.xlsm" 

'Write the macro name - could try including module name
strMacro = "Update" '    "Sheet1.Macro2" 

'Create an Excel instance and set visibility of the instance
Set objApp = CreateObject("Excel.Application") 
objApp.Visible = True   '   or False 

'Open workbook; Run Macro; Save Workbook with changes; Close; Quit Excel
Set wbToRun = objApp.Workbooks.Open(strPath) 
objApp.Run strMacro     '   wbToRun.Name & "!" & strMacro 
wbToRun.Save 
wbToRun.Close 
objApp.Quit 

'Leaves an onscreen message!
MsgBox strPath & " " & strMacro & " macro and .vbs successfully completed!",         vbInformation 
'

`

  1. Auf der Registerkarte Aktion (Taskplaner) :

set Programm/Skript: = C:\Windows\System32\cscript.exe

set Argumente hinzufügen (optional): = C:\MyVbsFile.vbs

  1. Zum Schluss nicht "Ausführen, ob Benutzer angemeldet ist oder nicht" einschalten .

Das sollte funktionieren.

Gib mir Bescheid!

Rod Bowen

2
Rod Bowen

Ich habe einen viel einfacheren Weg gefunden und hoffe, dass es für Sie funktioniert. (unter Windows 10 und Excel 2016)

Erstellen Sie ein neues Modul und geben Sie den folgenden Code ein: Sub auto_open () 'Makro ausgeführt werden (muss nicht in diesem Modul sein, nur in dieser Arbeitsmappe End Sub.)

Richten Sie eine Aufgabe über den Taskplaner ein, und legen Sie fest, dass "das Programm ausgeführt wird" als Excel (gefunden unter C:\Programme (x86)\Microsoft Office\root\Office16). Legen Sie dann das Argument "Argumente hinzufügen (optional):" als Dateipfad für die Arbeitsmappe mit Makroaktivierung fest. Denken Sie daran, dass sowohl der Pfad zu Excel als auch der Pfad zur Arbeitsmappe in Anführungszeichen stehen sollten.

* Siehe Beispiel aus Rich, bearbeitet von Community, für ein Bild des Windows-Scheduler-Bildschirms.

0
Justin