인터넷에서 일부 정보를 다운로드하는 매크로가 있으며 특정 시간에 시작하여 때때로 특정 시간에 설정 시간 간격으로 반복적으로 실행되도록 예약해야합니다 매크로로 출력.타이머에서 vbscript를 통해 매크로를 자동으로 실행합니다.
저는 두 가지 방법으로 문제에 접근했습니다. 둘 다 알아 내지 못하는 문제를 나타 냈습니다. 첫 번째 방법은 매크로로 업데이트되는 통합 문서의 셀에서 파생 된 런타임으로 Application.OnTime 명령을 사용하여 매크로를 실행하는 타이머 하위를 사용하는 것입니다.
이 방법은 컴퓨터에서 다른 일을하는 경우 잘 작동합니다. 그러나 컴퓨터를 잠자 지 않는 경우에도 30 분 정도 지나면 필연적으로 프로그램이 다시 실행되지 않습니다. 때로는 컴퓨터에서 실행 중일 때도 다시 실행되지 않습니다. 왜 이런거야? 무엇이 이것을 일으킬 수 있습니까? 또한 자연스럽게 프로그램에서 매크로를 열어 자동으로 실행하도록 예약 할 수 없으므로 솔루션의이 부분에 대한 VBScript & 작업 스케줄러 메서드를 사용했습니다.
그러나 VBScript 실행과 관련하여 두 가지 문제가 발생했습니다. 첫째, 작업 스케줄러에서 실행할 때 시작되지 않는 경우가 종종 있습니다. 둘째, 실행될 때 매크로 내의 Application.OnTime 명령이 작동하지 않습니다. 매크로가 반복을 통해 실행될 때 하루 중에 결정되는 불규칙한 시간 간격으로 매크로를 실행해야하기 때문에 문제가됩니다. 작업 관리자가 시도 할 때 vbscript가 실행되지 않는 이유는 무엇이며 수동으로 실행할 때 매크로가 수행하는 방식과 달리 application.ontime 명령을 시작하지 않는 이유는 무엇입니까?
VBA 타이머 코드 :
Sub Timer()
Dim Runtime As Date
If Time <= TimeValue("17:45:00") Then
Workbooks("10am_Swing_Report").Sheets("Parameters").Cells(17, 2).Value = 10
ElseIf Time > TimeValue("17:45:00") And Time <= TimeValue("18:15:00") Then
Workbooks("10am_Swing_Report").Sheets("Parameters").Cells(17, 2).Value = 13
ElseIf Time > TimeValue("18:15:00") And Time <= TimeValue("18:45:00") Then
Workbooks("10am_Swing_Report").Sheets("Parameters").Cells(17, 2).Value = 16
ElseIf Time > TimeValue("18:45:00") And Time <= TimeValue("19:15:00") Then
Workbooks("10am_Swing_Report").Sheets("Parameters").Cells(17, 2).Value = 19
End If
Workbooks("10am_Swing_Report").Sheets("Parameters").Range("B16").Calculate
If Time > Workbooks("10am_Swing_Report").Sheets("Parameters").Range("B16").Value Then
Runtime = Time + TimeValue("00:00:30")
Else
Runtime = Workbooks("10am_Swing_Report").Sheets("Parameters").Range("B16").Value
End If
Application.OnTime TimeValue(Runtime), "Swingtimer"
Workbooks("10am_Swing_Report").Sheets("Parameters").Range("C16").Value = Runtime
Workbooks("10am_Swing_Report").Save
End Sub
감사합니다!
런타임에 통과되었다는 유효성 검사를 포함하도록 VBS 코드를 업데이트했지만 작업 스케줄러가 작업을 시작하지 못하는 문제가 여전히 발생합니다. 다음 오류가 발생합니다. "시작 요청이 무시되었습니다. 인스턴스가 이미 실행 중입니다."다음에 "작업 시작 실패"가 표시됩니다. 나는 원래 Vbscript가 이전 인스턴스에서 계속 실행 중이었기 때문에 이것이 원래 생각한 것이지만 처음부터 이것을 얻었습니다.
Option Explicit
Dim xlApp
Dim xlBook
Dim runtime
Dim xlSheet
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
'xlApp.Application.DisplayAlerts = True
Set xlBook = xlApp.Workbooks.Open("C:\Users\DORIAN\Dropbox\Swing_Report.xlsm",1,False)
Set xlSheet = xlBook.Sheets("Parameters")
'xlBook.application.Visible = True
'MsgBox FormatDateTime(xlSheet.Range("B16").Value,3)
runtime = TimeValue(FormatDateTime(xlSheet.Range("B16").Value,3))
'MsgBox runtime
If Time > runtime Then
xlApp.Run "Swingtimer"
'MsgBox "Running..."
WScript.Sleep 30000
Else
xlApp.Application.OnTime runtime, "Swingtimer"
'MsgBox "Timer Set"
End If
xlbook.close True
WScript.Quit
VBA 및 VBScript 부분의 코드를 입력하십시오. 그것이 지금 진술 된 것처럼, 대답으로 제공 될 수있는 것이 많지 않습니다. – trincot