2017-04-22 3 views
0

특정 Excel 워크 시트에서 작동하는 Excel 매크로가 있습니다. 그것은 테이블을 검사하고 필요에 따라 사람들에게 알림 전자 메일을 보냅니다. 매일 매일 테이블을 확인하기 위해이 매크로를 하루에 한 번 실행하여 워크 시트를 열어서 매일 할 필요가 없습니다. 나는 Windows 작업 스케줄러에 대해 하나의 옵션으로 들었다. 내 목적에 맞는 좋은 옵션이라고 생각하십니까?하루에 한 번 VBA Excel 매크로 실행

고맙습니다.

+0

어느 Windows 작업 스케줄러 또는 다른 스케줄러는 당신이 가지고있는 유일한 옵션입니다. Excel 파일은 단지 문서 일뿐입니다. 그렇지 않으면 메일을 보내기 위해 외부에서 매크로를 트리거하므로 Excel 내부에있는 매크로를 매일 자동으로 실행하는 것은 불가능합니다. 하루에 한 번만 메일을 보내는 것은 매크로 내부에 통합 될 수 있습니다. 그러나 일상적으로 매크로를 트리거하는 것은 외부 유틸리티에 의해서만 수행되어야합니다. – Karpak

+1

Excel 파일을 영구적으로 열어두면 매크로에 'OnTime' 이벤트를 추가 할 수는 있지만 일반적으로 실용적이지 않으므로 Task Scheduler가 가장 좋은 방법 일 것입니다. – YowE3K

+2

@Karpak 매크로를 실행하는 VbScript (또는 배치 파일)를 실행하는 것은 어떻습니까? – Masoud

답변

0

작업 스케줄러는 좋은 선택입니다. 새로운 프로세스를 생성하고 통합 문서를 열려면 당신은 (1) 엑셀 실행하고 나는 전체 주위에 따옴표를 좋을 걸 그래서 뭔가

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

처럼 (2) 통합 문서를 열 명령 줄 specifiying이있을 것이다 통합 문서 경로 (Excel.exe에는 필요하지 않음).

MyWorkbook.xlsm에서는 통합 문서를 열 때마다 실행되는 코드를 작성할 수 있습니다. 일반적으로 표준 모듈에는 sub Auto_Open, ThisWorkbook 모듈에는 Sub Workbook_Open()이 있습니다.

0

나는 VBScript 파일을 권장하고 작업 스케줄러를 사용하여 매일 실행하도록하고 싶습니다. Excel 파일을 하루 중 언제든지 열 수 있으며 매크로가 실행되지 않기 때문에 (이 특정 시간에만 업데이트하기를 원할 때 유용합니다).

이것은 메모장에 작성한 다음 *.vbs 확장자로 저장하는 데 필요한 VB 스크립트입니다.

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 

그럼 당신은 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] 

다른 링크를 당신이 유용하게 사용할 수 :

Task Scheduler from the command line? 슈퍼 유저에서

What is a simple way to schedule a single event to happen at some time in the future?리눅스,유닉스

How to Schedule Programs to Run Automatically in Windows 7?기즈모의 프리웨어 (TechSupportAlert)에서