2017-04-22 6 views
0

Ich habe einige Excel-Makro, die auf einem bestimmten Excel-Arbeitsblatt funktioniert. Es überprüft eine Tabelle und sendet Erinnerungs-E-Mail an einige Personen nach Bedarf. Ich möchte, dass dieses Makro einmal am Tag ausgeführt wird, um die Tabelle jeden Tag zu überprüfen, so dass ich das Arbeitsblatt nicht öffnen muss und es jeden Tag selbst tun muss. Ist es verfügbar, es zu tun? Ich habe von Windows Taskplaner als eine Option gehört. Glauben Sie, dass das eine gute Option für meinen Zweck ist?Führen VBA Excel-Makro einmal pro Tag

Vielen Dank!

+0

Entweder Windows-Taskplaner oder andere Scheduler ist die einzige Option, die Sie haben. Die Excel-Datei ist nur ein Dokument. Wenn Sie nicht ein Makro von außen auslösen, um eine E-Mail zu senden, ist es nicht möglich, ein Makro innerhalb der Excel-Datei automatisch täglich auszuführen. Das Senden einer Mail nur einmal am Tag kann in das Makro eingefügt werden. Allerdings muss dieses Makro täglich nur vom externen Dienstprogramm ausgelöst werden. – Karpak

+1

Wenn Sie bereit waren, die Excel-Datei dauerhaft offen zu lassen, könnten Sie Ihrem Makro ein 'OnTime'-Ereignis hinzufügen, aber das ist normalerweise nicht praktikabel, daher ist der Aufgabenplaner wahrscheinlich der beste Weg. – YowE3K

+2

@Karpak Was ist mit dem Ausführen eines VbScript (oder Batch-Datei), die dieses Makro ausführt? – Masoud

Antwort

0

Taskplaner ist eine gute Option, wie Sie sagen. Um einen neuen Prozess zu erzeugen und eine Arbeitsmappe öffnen, würden Sie eine Befehlszeile folgende Einzelheiten haben (1) Die Excel ausführbare Datei und (2) die Arbeitsmappe zu öffnen, so etwas wie

C:\Program Files\Microsoft Office 15\root\office15\Excel.exe "c:\MyWorkbook.xlsm" 

ich doppelte Anführungszeichen raten würde um den vollen Pfad zur Arbeitsmappe (aber nicht für die Excel.exe erforderlich).

Dann können Sie in MyWorkbook.xlsm Code schreiben, der beim Öffnen der Arbeitsmappe ausgeführt wird. Klassischerweise war dies sub Auto_Open in einem beliebigen Standardmodul oder Sub Workbook_Open() im Modul ThisWorkbook.

0

Ich würde eine VBScript-Datei empfehlen und dafür sorgen, dass sie täglich mit dem Task-Scheduler ausgeführt wird. Ich bevorzuge das, denn dann kann ich die Excel-Datei zu jeder Tageszeit öffnen und das Makro wird nicht ausgeführt (falls Sie nur wollen, dass es nur zu dieser bestimmten Zeit aktualisiert wird).

Dies ist das VBScript, das Sie in Notepad schreiben müssen und dann mit der Erweiterung *.vbs speichern.

Option Explicit 
'On Error Resume Next 'Comment-out for debugging 
ExcelMacro 

Sub ExcelMacro() 

    Dim xlApp 
    Dim xlBook 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook = 
    xlApp.Workbooks.Open("path\to\the\file.xlsm", 0, True) 

     xlApp.Run "Update" 'Name of your Sub 
     xlBook.Save 
     xlBook.Close 
     xlApp.Quit 

    Set xlBook = Nothing 
    Set xlApp = Nothing 

End Sub 

Dann können Sie den Event-Scheduler von der Befehlszeile festgelegt, wie dies von here:

schtasks /Create [/S <system> [/U <username> [/P [<password>]]]] 
[/RU <username> [/RP <password>]] /SC <schedule> [/MO <modifier>] [/D <day>] 
[/M <months>] [/I <idletime>] /TN <taskname> /TR <taskrun> [/ST <starttime>] 
[/RI <interval>] [ {/ET <endtime> | /DU <duration>} [/K] [/XML <xmlfile>] [/V1]] 
[/SD <startdate>] [/ED <enddate>] [/IT] [/Z] [/F] 

Andere Links können Sie nützlich:

Task Scheduler from the command line? von Super-User-

What is a simple way to schedule a single event to happen at some time in the future? von Linux & Unix

How to Schedule Programs to Run Automatically in Windows 7? von Gizmos Freeware (TechSupportAlert)