여러 통합 문서에서 매크로 실행 (Microsoft Excel)
매크로를 사용하여 처리하려는 통합 문서가 상당히 많은 경우 처리 매크로를 각 통합 문서 내에 (Auto_Open 매크로로) 배치 한 다음 각 통합 문서를로드하는 루틴 유형을 작성하고 싶을 수 있습니다. 차례로 저장하십시오.
이론 상으로는 좋게 들릴지 모르지만 실제로는 작동하지 않습니다. 왜?
매크로 제어에서 통합 문서를 열면 열려있는 통합 문서의 Auto_Open 매크로가 자동으로 실행되지 않기 때문입니다. 이 문제에는 세 가지 방법이 있습니다.
첫 번째는 각 통합 문서에서 Auto_Open 매크로에 의존하지 않도록 매크로를 다시 실행하는 것입니다. 각 통합 문서의 Auto_Open 매크로가 동일하다면 단순히 코드를 제어 통합 문서의 별도 프로 시저로 이동하지 않는 이유는 무엇입니까? 예를 들어, 다음 프로세스를 따르는 코드를 사용하고 있다고 가정 해 보겠습니다.
Sub MyMacro() Dim J As Integer Dim sTarget As String Application.ScreenUpdating = False For J = 1 To 999 sTarget = "Book" & Format(J, "000") & ".xls" Workbooks.Open sTarget 'Auto_Open runs here Workbooks(sTarget).Save Next J Application.ScreenUpdating = True End Sub
이미 설명 된 이유로 작동하지 않습니다. 한 가지 해결책은 다음과 같이 일반적인 Auto_Open 코드를 다른 프로 시저로 이동 한 다음 통합 문서를 연 후 호출하는 것입니다.
Sub MyMacro() Dim J As Integer Dim sTarget As String Application.ScreenUpdating = False For J = 1 To 999 sTarget = "Book" & Format(J, "000") & ".xls" Workbooks.Open sTarget Workbooks(sTarget).Activate DoCommonCode Workbooks(sTarget).Save Next J Application.ScreenUpdating = True End Sub
Sub DoCommonCode() 'Common code goes here End Sub
이 방법은 모든 다른 통합 문서에서 실행되는 루틴이 동일하다면 잘 작동합니다. 각 통합 문서에서 루틴이 다른 경우 VBA가 Auto_Open 매크로를 실행하도록 할 수 있습니다. 통합 문서를 연 직후 RunAutoMacros 메서드를 사용하면됩니다.
Workbooks.Open sTarget ActiveWorkbook.RunAutoMacros xlAutoOpen
이러한 접근 방식을 사용하면 각 통합 문서를 간단히 열고 (Auto_Open 매크로가 실행될 수 있도록) 저장하는 매크로를 쉽게 만들 수 있습니다. 이러한 매크로는 다음과 같이 나타납니다.
Sub RunAutoOpenMacrosInBooks() Dim J As Integer Dim sTarget As String Application.ScreenUpdating = False For J = 1 To 999 sTarget = "Book" & Format(J, "000") & ".xls" On Error Resume Next Workbooks.Open sTarget Windows(sTarget).Activate With ActiveWorkbook If .Name <> ThisWorkbook.Name Then .RunAutoMacros xlAutoOpen .Save .Close End If End With Next i Application.ScreenUpdating = True End Sub
세 번째, 더 나은 방법은 각 통합 문서에서 Auto_Open 매크로를 사용하지 않는 것입니다. 대신 매크로를 실행하는 방법으로 Workbook_Open 이벤트를 사용하십시오. Workbook_Open 이벤트는 통합 문서를 수동으로 열 었는지 또는 다른 매크로에서 열 었는지에 관계없이 자동으로 트리거됩니다. 이벤트에 포함 된 코드는 Auto_Open 매크로에서 예상하는 것처럼 자동으로 실행됩니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (1850)은 Microsoft Excel 2007, 2010 및 2013에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excel-Running_a_Macro_in_a_Number_of_Workbooks [여러 통합 문서에서 매크로 실행]
.