rand(life)
[엑셀Q/A] 폴더 안에 있는 여러 엑셀파일에 동일한 매크로 적용 본문
어느 분이 댓글로 질문하신 내용입니다.
http://flogsta.tistory.com/632#comment5458065
제가 한 폴더 안에 엑셀 파일이 50개가 넘는데요 작업이 쉽지가 않아서요.
제가 가진 지식으로 해결할 수 없는 문제에 닥치면, 일단 구글의 도움을 빌립니다. 그랬더니, 역시나 답이 나왔습니다.
출처: http://www.eggheadcafe.com/software/aspnet/33007769/run-macro-on-multiple-files.aspx
다음의 매크로는 특정 폴더(여기서는 C:\Temp\)안에 있는 모든 엑셀파일의 이름을 A열에 나열하고,
A1셀에 있는 파일부터 하나씩 열어 macroxx라는 매크로를 실행한 후, C:\Temp\New 폴더를 만들어 저장하고, 닫는 동작을 수행합니다.
Sub list_um()
Dim F As String
Dim roww As Long
roww = 0
Dim FileLocSpec As String
FileLocSpec = "C:\Temp\*.xls"
MkDir ("C:\temp\new")
F = Dir(FileLocSpec)
Do Until F = ""
roww = roww + 1
Cells(roww, 1).Value = F
F = Dir
Loop
Set r = Range("A1")
While r.Value <> ""
Workbooks.Open Filename:="C:\Temp\" & r.Value
Call macroxx
ActiveWorkbook.SaveAs Filename:="C:\Temp\new\" & r.Value, _
FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Application.DisplayAlerts = False
Set r = r.Offset(1, 0)
Wend
Application.DisplayAlerts = True
End Sub
이 매크로를 만들고 매크로 사용통합문서(*.xlsm)로 저장하신 후, 실행해 보시면 매크로 macroxx가 실행된 결과의 엑셀파일이 C:\Temp\new 폴더 밑에 저장되어 있을 겁니다.
(단, 이 매크로가 있는 파일은 C:\Temp 폴더안에 있으면 안됩니다)
엑셀2007형식의 파일(*.xlsx)에 잘 적용됩니다. 97-2003형식(*.xls) 의 파일도 실행은 됩니다만 저장된 파일을 열때 경고메시지가 출력됩니다.