시간이 지남에 따라 엄청난 수의 Excel 통합 문서를 만들고 수집하는 것은 매우 쉽습니다. 동일한 변경을 수행해야하는 통합 문서가 많이 있다고 가정합니다. 예를 들어, 각 통합 문서에있는 각 워크 시트의 A10 셀에 저장된 값을 변경해야 할 수 있습니다.

변경할 통합 문서가 몇 개만있는 경우 작업은 매우 쉽습니다. 각 통합 문서를로드하고 차례로 각 통합 문서를 변경합니다. 변경해야하는 통합 문서가 수백 개있는 경우 작업은 더욱 강력 해집니다.

이 작업을 한 번만 수행하면 될 것으로 예상되는 경우 가장 쉬운 해결 방법은 각 통합 문서의 경로와 파일 이름을 포함하는 텍스트 파일을 한 줄에 하나씩 만드는 것입니다. 예를 들어, 다음과 같은 항목이있는 파일로 끝날 수 있습니다.

c:\myfiles\first workbook.xlsx c:\myfiles\second workbook.xlsx c:\myfiles\third workbook.xlsx

파일에는 필요한만큼 많은 행이 포함될 수 있습니다. 별로 중요하지 않습니다. 중요한 것은 각 줄이 유효한 경로와 파일 이름이고 파일에 빈 줄이 없다는 것입니다.

명령 프롬프트 창을 표시하고 통합 문서가 포함 된 디렉터리로 이동 한 후 다음 명령을 실행하여 이러한 파일을 가장 쉽게 만들 수 있습니다.

dir /b > myfilelist.txt

디렉토리의 각 파일은 myfilelist.txt 파일로 끝납니다. 불필요한 항목을 삭제할 수 있도록 텍스트 파일을 텍스트 편집기로로드하고 체크 아웃해야합니다. (예를 들어, myfilelist.txt는 목록에서 끝납니다.) 또한 파일의 각 줄 시작 부분에 경로 이름을 추가해야합니다.

파일이 완성되면 Excel을 시작하고 매크로를 사용하여 텍스트 파일을 읽고, 텍스트 파일에 나열된 각 통합 문서를로드하고, 해당 통합 문서의 각 워크 시트를 단계별로 실행하고, 적절하게 변경하고, 통합 문서를 저장할 수 있습니다. 다음 매크로는 이러한 작업을 훌륭하게 수행합니다.

Sub ChangeFiles1()

Dim sFilename As String     Dim wks As Worksheet

Open "c:\myfiles\myfilelist.txt" For Input As #1     Do While Not EOF(1)

Input #1, sFilename  ' Get workbook path and name         Workbooks.Open sFilename

With ActiveWorkbook             For Each wks In .Worksheets                 ' Specify the change to make                 wks.Range("A1").Value = "A1 Changed"

Next         End With

ActiveWorkbook.Close SaveChanges:=True     Loop     Close #1 End Sub

이 접근 방식은 통합 문서 파일의 단일 배치 만 처리해야하는 경우에 효과적이지만 나중에 이러한 변경이 필요할 것으로 예상되는 경우 훨씬 더 유연하게 만들 수 있습니다. 물론 가장 큰 번거 로움은 파일 배치를 처리 할 때마다 myfilelist.txt 파일을 모으는 것입니다. 매크로가 단순히 디렉터리를 사용한 다음 해당 디렉터리에서 각 통합 문서를로드 할 수있는 경우 유연성이 추가됩니다.

Sub ChangeFiles2()

Dim MyPath As String     Dim MyFile As String     Dim dirName As String     Dim wks As Worksheet

' Change directory path as desired     dirName = "c:\myfiles\"



MyPath = dirName & "*.xlsx"

MyFile = Dir(MyPath)

If MyFile > "" Then MyFile = dirName & MyFile

Do While MyFile <> ""

If Len(MyFile) = 0 Then Exit Do

Workbooks.Open MyFile

With ActiveWorkbook             For Each wks In .Worksheets                 ' Specify the change to make                 wks.Range("A1").Value = "A1 Changed"

Next         End With

ActiveWorkbook.Close SaveChanges:=True

MyFile = Dir         If MyFile > "" Then MyFile = dirName & MyFile     Loop End Sub

이 매크로는 dirName 변수에 지정한 디렉토리를 사용합니다.

Xlsx 확장자로 끝나는 모든 통합 문서 파일이로드되고 처리됩니다.

또 다른 방법은 매크로가 사용자에게 어떤 디렉터리를 처리해야하는지 묻도록하는 것입니다. 다음 매크로에 표시된 방식으로 표준 Excel 파일 대화 상자를 사용하여이 작업을 수행 할 수 있습니다.

Public Sub ChangeFiles3()

Dim MyPath As String     Dim MyFile As String     Dim dirName As String

With Application.FileDialog(msoFileDialogFolderPicker)

' Optional: set folder to start in         .InitialFileName = "C:\Excel\"

.Title = "Select the folder to process"

If .Show = True Then             dirName = .SelectedItems(1)

End If     End With

MyPath = dirName & "\*.xlsx"

myFile = Dir(MyPath)

If MyFile > "" Then MyFile = dirName & MyFile

Do While MyFile <> ""

If Len(MyFile) = 0 Then Exit Do

Workbooks.Open MyFile

With ActiveWorkbook             For Each wks In .Worksheets                 ' Specify the change to make                 wks.Range("A1").Value = "A1 Changed"

Next         End With

ActiveWorkbook.Close SaveChanges:=True

MyFile = Dir         If MyFile > "" Then MyFile = dirName & MyFile     Loop End Sub

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (8939)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Making_Changes_in_a_Group_of_Workbooks [통합 문서 그룹에서 변경].