source

여러 Excel 파일에서 동일한 Excel 매크로 실행

ittop 2023. 9. 9. 10:16
반응형

여러 Excel 파일에서 동일한 Excel 매크로 실행

나는 매일 1000개 이상의 엑셀 파일을 받는 폴더를 가지고 있는데 모두 같은 형식과 구조입니다.제가 하고 싶은 일은 매일 100개 이상의 파일에 매크로를 실행하는 것입니까?

이를 자동화할 수 있는 방법이 있습니까? 그래서 매일 1000개 이상의 파일에서 동일한 매크로를 계속 실행할 수 있습니다.

마스터 워크북과 관련된 파일을 "파일" 디렉토리에 저장할 경우 코드는 다음과 같습니다.

Sub ProcessFiles()
    Dim Filename, Pathname As String
    Dim wb As Workbook

    Pathname = ActiveWorkbook.Path & "\Files\"
    Filename = Dir(Pathname & "*.xls")
    Do While Filename <> ""
        Set wb = Workbooks.Open(Pathname & Filename)
        DoWork wb
        wb.Close SaveChanges:=True
        Filename = Dir()
    Loop
End Sub

Sub DoWork(wb As Workbook)
    With wb
        'Do your work here
        .Worksheets(1).Range("A1").Value = "Hello World!"
    End With
End Sub

예에서는 에서는 에서는 DoWork()모든 파일에 적용하는 매크로입니다.서든상할수록다를다efte수enste든u서l를srognroswb(현재 워크북이 열려 있음).

면책 사항: 간단한 설명을 위해 가능한 모든 오류 처리를 생략했습니다.

문제의 일부는 1000개의 파일에서 이 매크로를 어떻게 실행하느냐는 것입니다. ... 이 매크로를 1000개의 모든 워크북에 추가해야 합니까?

한 가지를 파일 입니다 도 하는 입니다 에 중앙에 추가하는 것입니다.PERSONAL.XLSB(때로는 확장자가 다를 수도 있습니다.)이 파일은 Excel을 시작할 때마다 백그라운드로 로드되며 매크로를 언제든지 사용할 수 있습니다.

처음에는 개인적인.XLSB 파일은 없습니다.이 파일을 자동으로 만들려면 스프레드시트의 왼쪽 하단에 기록 단추가 있는 "더미" 매크로 기록을 시작하고 "개인 매크로 워크북"을 선택하여 저장하면 됩니다.

매크로를 기록한 후 +로 F11VBA 편집기를 열면 퍼스널이 나타납니다."더미"가 기록된 매크로가 있는 XLSB 파일.

이 파일을 사용하여 항상 사용 가능한 일반 매크로의 로드를 저장합니다.열린 .xlsx 파일과는 무관합니다.저는 이 매크로들을 제 메뉴 리본에 추가했습니다.

이 일반 매크로 파일의 단점 중 하나는 Excel 인스턴스를 둘 이상 실행하면 PERSONAL이라는 오류 메시지가 표시된다는 것입니다.XLSB 파일은 이미 Excel 인스턴스 Nr. 1에서 사용 중입니다.이 시점에서 새 매크로를 추가하지 않는 한 문제가 없습니다.

이것에 대해 대단히 감사합니다.

Sub ProcessFiles()
    Dim Filename, Pathname As String
    Dim wb As Workbook

    Pathname = ActiveWorkbook.Path & "C:\Users\jkatanan\Desktop\20170206Glidepath\V37\"
    Filename = Dir(Pathname & "*.xls")
    Do While Filename <> ""
        Set wb = Workbooks.Open(Pathname & Filename)
        BSAQmacro wb

        wb.Close SaveChanges:=True
        Filename = Dir()
    Loop
End Sub
Sub DoWork(wb As Workbook)
    With wb
        'Do your work here
        .Worksheets(1).Range("A1").Value = "Hello World!"
    End With
End Sub
Sub ProcessFiles()
    Dim Filename, Pathname As String
    Dim wb As Workbook

    Pathname = ActiveWorkbook.Path & "\C:\Users\20098323\Desktop\EXCL\"
    Filename = Dir(Pathname & "*.xlsx")
    Do While Filename <> ""
        Set wb = Workbooks.Open(Pathname & Filename)
        DoWork wb
        wb.Close SaveChanges:=True
        Filename = Dir()
    Loop
End Sub

Sub DoWork(wb As Workbook)
    With wb
        'Do your work here
        .Worksheets(1).Range("A1").Value = "Hello World!"
    End With
End Sub

이 코드를 실행하는 동안 파일 이름이나 번호가 잘못 표시됩니다.모든 파일을 ("\C:\Users\20098323\Desktop\")에 저장했습니다.EXCL\") EXCL 폴더

DoWork에 값을 전달하는 대신 작업을 실행할 수도 있습니다.Processfiles().

Sub ProcessFiles()

    Dim Filename, Pathname As String
    Dim wb1 As Workbook
    Dim wb2 As Workbook

    Dim Sheet As Worksheet
    Dim PasteStart As Range
    Dim Counter As Integer

    Set wb1 = ActiveWorkbook
    Set PasteStart = [RRimport!A1]

    Pathname = ActiveWorkbook.Path & "\For Macro to run\"
    Filename = Dir(Pathname & "*.xls")
    Do While Filename <> ""
        Set wb2 = Workbooks.Open(Pathname & Filename)
        For Each Sheet In wb2.Sheets
                With Sheet.UsedRange
                .Copy PasteStart
                Set PasteStart = PasteStart.Offset(.Rows.Count)
            End With
        Next Sheet
        wb2.Close
        Filename = Dir()
    Loop
End Sub

이것은 질문에 대한 정확한 대답이 아닙니다. 왜냐하면 저는 열려 있는 모든 파일에 대해 하나의 스크립트를 실행하려고 했을 뿐이고 그것이 작동하지는 못했지만, 이것이 저와 같은 다른 사람들에게 도움이 될 것이라고 생각했기 때문입니다.Visual Basic for Applications(애플리케이션용 시각적 기본) 대화 상자의 Module(모듈)로 코드를 이동하면 작동했습니다("삽입"으로 이동한 다음 "Module(모듈)"로 이동).모듈에 내 VBA 코드를 추가하면 엑셀에서 다른 파일(CSV 파일도 포함)을 열고 매크로로 이동한 후, 내가 열었던 파일의 다른 파일(코드가 있는 모듈이 포함된)에서 매크로를 실행할 수 있었습니다.

언급URL : https://stackoverflow.com/questions/14766238/run-same-excel-macro-on-multiple-excel-files

반응형