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
Verwenden Sie am besten ein vbs wie angegeben
vbs
, bei der es sich um eine Textdatei mit der Erweiterung .vbs handelt (siehe Beispielcode unten).vbs
auszuführen.vbs
, um die workbook
zum geplanten Zeitpunkt zu öffnen, und dann entweder: Private Sub Workbook_Open()
-Ereignis im ThisWorkbook
-Modul, um Code auszuführen, wenn die Datei geöffnet wirdApplication.Run
in der vbs
, um das Makro auszuführenDieses 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
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"
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)
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.
Drei wichtige Schritte - Vorgehensweise beim Planen einer Excel.xls (m) -Datei
einfach :
GENAUER...
`
' 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
'
`
set Programm/Skript: = C:\Windows\System32\cscript.exe
set Argumente hinzufügen (optional): = C:\MyVbsFile.vbs
Das sollte funktionieren.
Gib mir Bescheid!
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.