순수 Excel/VBA에서이 작업을 수행하려는 경우 실제로 명령 줄 매개 변수를 통합 문서로 보낼 수 있습니다. 가장 직접적인 과정은 아닙니다.
트릭은, 당신이 그것을 말해 조용히 다른 모든 시간을 종료 할 때 그것은 단지 당신의 새로 고침 작업을 수행하는 것입니다.
1 단계 : 이벤트를 만들 : 그것은 마지막 매개 변수가 명령 줄 인수 얻는 경우에 다시
Private Sub Workbook_Open()
Dim CmdRaw As Long
Dim CmdLine, LastParam As String
Dim Params As Variant
CmdRaw = GetCommandLine ' in our example, this will be /e/Refresh
CmdLine = CmdToSTr(CmdRaw)
Params = Split(CmdLine, "/")
LastParam = Params(UBound(Params))
If LastParam = "Refresh" Then
Module1.RunAllOfThatAutomationJunk
End If
End Sub
, 이것은 단지 실제 작업을 할 것 "새로 고침을." 물론 원하는대로 만들 수 있습니다.
이것은 직관적이지 않은 부분입니다.
excel.exe c:\MyLocation\MyFile.xlsm /e/Refresh
가 /e
Excel로 전송 할 명령을 트리거 무엇이고, 당신은 할 수 있습니다 당신이 작업 관리자에서 통합 문서를 열 때, 당신은 당신의 문서와 함께 명령 줄 매개 변수를 사용하여 Excel 응용 프로그램을 열 필요가 이벤트가이를 어떻게 분석하는지보십시오. 슬래시 사이에 원하는만큼 많은 명령 행 인수를 넣을 수 있습니다. Excel.exe를 실제로 뭔가를 할 수있는 곰 염두에
:
"c:\Program Files (x86)\Microsoft Office\Office14\excel.exe"
하지만 난 아무것도 생각하고 싶지 않았다.
--EDIT--
이 코드는 이러한 기능을 사용하기 위해 (모듈에) 존재한다. 과거에는 성공하지 않고 통합 문서 VBA 자체에 추가하려고했지만 별도의 모듈/클래스에 있으면 완벽하게 작동하는 것 같습니다.
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW"() As Long
Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (MyDest As Any, MySource As Any, ByVal MySize As Long)
Function CmdToSTr(cmd As Long) As String
Dim Buffer() As Byte
Dim StrLen As Long
If cmd Then
StrLen = lstrlenW(cmd) * 2
If StrLen Then
ReDim Buffer(0 To (StrLen - 1)) As Byte
CopyMemory Buffer(0), ByVal cmd, StrLen
CmdToSTr = Buffer
End If
End If
End Function
아마도 작업 관리자에서 파일을 여는 대신 스크립트를 실행하면 스크립트에서 통합 문서를 열고 매크로를 시작할 수 있습니다. – Hrothgar
감사합니다. 나는 그 일이 어떻게 생소하는지 조금 익숙하지 만, 나는 그 일을 조사 할 것이다. 도움이 될만한 조언이 있다면 –
매크로를 실행하는 데 사용하는 vbscript는 이렇게됩니다.서브 ExcelMacroExample() 희미한 xlApp 희미한 xlBook xlApp 설정 = CreateObject를 ("이 Excel.Application") 설정 xlBook = xlApp.Workbooks.Open ("Tables.xls을", 0, false)를 xlapp.visible = TRUE xlApp.Run "UpdateAll" xlapp.activeworkbook.close xlApp.Quit 설정 xlBook = 아무것도 xlApp 설정 = 아무것도 최종 하위 – Hrothgar