통합 문서 그룹에서 변경 (Microsoft Excel)
시간이 지남에 따라 엄청난 수의 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 변수에 지정한 디렉토리를 사용합니다.
또 다른 방법은 매크로가 사용자에게 어떤 디렉터리를 처리해야하는지 묻도록하는 것입니다. 다음 매크로에 표시된 방식으로 표준 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 [통합 문서 그룹에서 변경]
.