단일 통합 문서로 여러 파일 가져 오기 (Microsoft Excel)
하드 드라이브에 30 개의 텍스트 파일이 포함 된 폴더가 있고 모든 파일을 Excel 통합 문서로 가져 오려고한다고 가정 해 보겠습니다. 각 텍스트 파일이 통합 문서의 고유 한 워크 시트에 저장되도록하여 총 30 개의 워크 시트를 갖게됩니다.
이를 수행하는 한 가지 방법은 원하는 워크 시트를 수동으로 추가 한 다음 각 텍스트 파일을 개별적으로 가져 오는 것입니다. 상상할 수 있듯이 이것은 금방 지루해질 것입니다. 훨씬 더 나은 솔루션은 다음과 같이 매크로를 사용하여 가져 오기를 수행하는 것입니다.
Sub CombineTextFiles() Dim FilesToOpen Dim x As Integer Dim wkbAll As Workbook Dim wkbTemp As Workbook Dim sDelimiter As String On Error GoTo ErrHandler Application.ScreenUpdating = False sDelimiter = "|" FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Text Files (.txt), .txt", _ MultiSelect:=True, Title:="Text Files to Open") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 Set wkbTemp = Workbooks.Open(FileName:=FilesToOpen(x)) wkbTemp.Sheets(1).Copy Set wkbAll = ActiveWorkbook wkbTemp.Close (False) wkbAll.Worksheets(x).Columns("A:A").TextToColumns _ Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=False, Semicolon:=False, _ Comma:=False, Space:=False, _ Other:=True, OtherChar:="|" x = x + 1 While x <= UBound(FilesToOpen) Set wkbTemp = Workbooks.Open(FileName:=FilesToOpen(x)) With wkbAll wkbTemp.Sheets(1).Move After:=.Sheets(.Sheets.Count) .Worksheets(x).Columns("A:A").TextToColumns _ Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=False, Semicolon:=False, _ Comma:=False, Space:=False, _ Other:=True, OtherChar:=sDelimiter End With x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Set wkbAll = Nothing Set wkbTemp = Nothing Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
이 매크로를 사용하면 가져올 파일을 선택한 다음 해당 파일의 데이터를 통합 문서의 별도 워크 시트에 배치 할 수 있습니다. 매크로는 가져 오는 데이터가 필드 사이의 구분 기호로 파이프 문자 (|)를 사용한다고 가정합니다.
가져올 파일이 항상 특정 폴더에 있고 해당 폴더의 모든 파일을 가져 오려는 경우 매크로를 약간 단순화 할 수 있습니다. 다음 예제에서는 파일이 c : \ temp \ load_excel 폴더에 있다고 가정하지만 매크로 코드에서 fpath 변수를 간단히 변경하여 해당 폴더 이름을 변경할 수 있습니다.
Sub LoadPipeDelimitedFiles() Dim idx As Integer Dim fpath As String Dim fname As String idx = 0 fpath = "c:\temp\load_excel\" fname = Dir(fpath & "*.txt") While (Len(fname) > 0) idx = idx + 1 Sheets("Sheet" & idx).Select With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _ & fpath & fname, Destination:=Range("A1")) .Name = "a" & idx .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = "|" .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False fname = Dir End With Wend End Sub
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (3148)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excelribbon-Importing_Multiple_Files_to_a_Single_Workbook [여러 파일을 단일 통합 문서로 가져 오기]
.