이 문서에서는 폴더의 여러 통합 문서에서 새 통합 문서로 데이터를 복사하는 매크로를 만듭니다.

두 개의 매크로를 만들 것입니다. 하나의 매크로는 첫 번째 열의 레코드 만 새 통합 문서로 복사하고 두 번째 매크로는 모든 데이터를 여기에 복사합니다.

이 예의 원시 데이터는 직원의 출석 기록으로 구성됩니다.

TestFolder에는 여러 Excel 파일이 있습니다. Excel 파일의 파일 이름은 “ddmmyyyy”형식으로 특정 날짜를 나타냅니다.

ArrowFilesSource

각 Excel 파일에는 특정 날짜에 참석 한 직원의 날짜, 직원 ID 및 직원 이름이 포함되어 있습니다.

ArrowRawFile

두 개의 매크로를 만들었습니다. “CopyingSingleColumnData”및“CopyingMultipleColumnData”. “CopyingSingleColumnData”매크로는 폴더에있는 모든 파일의 첫 번째 열에서 새 통합 문서로 레코드 만 복사합니다. “CopyingMultipleColumnData”매크로는 폴더의 모든 파일에서 새 통합 문서로 모든 데이터를 복사합니다.

“CopyingSingleColumnData”매크로는“Copying Single Column”버튼을 클릭하여 실행할 수 있습니다. “CopyingMultipleColumnData”매크로는“Copying Multiple Columns”버튼을 클릭하여 실행할 수 있습니다.

매크로를 실행하기 전에 텍스트 상자에 Excel 파일이있는 폴더의 경로를 지정해야합니다.

ArrowMain

“Copying Single Column”버튼을 클릭하면 정의 된 폴더에 새로운 워크 북“ConsolidatedFile”이 생성됩니다.이 워크 북은 폴더에있는 모든 파일의 첫 번째 열에서 통합 된 데이터를 포함합니다.

ArrowAfterRunningSingleColumnMacro

새로운 워크 북이 생성됩니다. 첫 번째 열에는 레코드 만 포함됩니다. 통합 된 데이터가 있으면 날짜 수를 계산하여 특정 날짜에 참석 한 직원 수를 찾을 수 있습니다. 특정 날짜의 수는 해당 특정 날짜에있는 직원 수와 같습니다. 일.

ArrowOutputAfterRunningSingleMacro

“복수 열 복사”버튼을 클릭하면 정의 된 폴더에 새로운 통합 문서“ConsolidatedAllColumns”가 생성됩니다. 이 통합 문서에는 폴더에있는 모든 파일의 모든 레코드에서 통합 된 데이터가 포함됩니다.

ArrowRunningSecondMacro

생성 된 새 통합 문서에는 폴더에있는 모든 파일의 모든 레코드가 포함됩니다. 통합 된 데이터가 있으면 모든 출석 세부 정보를 단일 파일로 사용할 수 있습니다. 특정 날짜에 참석 한 직원의 수를 쉽게 찾을 수 있으며 해당 날짜에 참석 한 직원의 이름도 얻을 수 있습니다.

ArrowFileAfterRunningSecondMacro

코드 설명

Sheet1.TextBox1.Value 위 코드는 시트“Sheet1”에서 텍스트 상자“TextBox1”에 삽입 된 값을 가져 오는 데 사용됩니다.

Dir (FolderPath & “* .xlsx”)

위 코드는 파일 확장자가“.xlsx”인 파일 이름을 가져 오는 데 사용됩니다. 여러 문자 파일 이름에 와일드 카드 *를 사용했습니다.

동안 파일 이름 <> “”

Count1 = Count1 + 1 ReDim Preserve FileArray (1 To Count1)

FileArray (Count1) = 파일 이름 FileName = Dir ()

Wend Above 코드는 폴더에있는 모든 파일의 파일 이름을 가져 오는 데 사용됩니다.

For i = 1 To UBound (FileArray)

다음 위의 코드는 폴더의 모든 파일을 반복하는 데 사용됩니다.

Range ( “A1”, Cells (LastRow, 1)). Copy DestWB.ActiveSheet.Cells (LastDesRow, 1)

위의 코드는 첫 번째 열의 레코드를 대상 통합 문서로 복사하는 데 사용됩니다.

Range ( “A1”, ActiveCell.SpecialCells (xlCellTypeLastCell)). Copy DestWB.ActiveSheet.Cells (LastDesRow, 1)

위의 코드는 활성 통합 문서의 모든 레코드를 대상 통합 문서로 복사하는 데 사용됩니다.

아래 코드를 따르세요

Option Explicit

Sub CopyingSingleColumnData()

'Declaring variables

Dim FileName, FolderPath, FileArray(), FileName1 As String

Dim LastRow, LastDesRow, Count1, i As Integer

Dim SourceWB, DestWB As Workbook

Application.ScreenUpdating = False

FolderPath = Sheet1.TextBox1.Value

'Inserting backslash in the folder path if backslash(\) is missing

If Right(FolderPath, 1) <> "\" Then

FolderPath = FolderPath & "\"

End If

'Searching for Excel files

FileName = Dir(FolderPath & "*.xlsx")

Count1 = 0

'Looping through all the Excel files in the folder

While FileName <> ""

Count1 = Count1 + 1

ReDim Preserve FileArray(1 To Count1)

FileArray(Count1) = FileName

FileName = Dir()

Wend

'Creating a new workbook

Set DestWB = Workbooks.Add

For i = 1 To UBound(FileArray)

'Finding the last row in the workbook

LastDesRow = DestWB.ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row

'Opening the Excel workbook

Set SourceWB = Workbooks.Open(FolderPath & FileArray(i))

LastRow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row

'Pasting the copied data to last row in the destination workbook

If LastDesRow = 1 Then

'Copying the first column to last row in the destination workbook

Range("A1", Cells(LastRow, 1)).Copy DestWB.ActiveSheet.Cells(LastDesRow, 1)

Else

Range("A1", Cells(LastRow, 1)).Copy DestWB.ActiveSheet.Cells(LastDesRow + 1, 1)

End If

SourceWB.Close False

Next

'Saving and closing a new Excel workbook

DestWB.SaveAs FileName:=FolderPath & "ConsolidatedFile.xlsx"

DestWB.Close

Set DestWB = Nothing

Set SourceWB = Nothing

End Sub

Sub CopyingMultipleColumnData()

'Declaring variables

Dim FileName, FolderPath, FileArray(), FileName1 As String

Dim LastRow, LastDesRow, Count1, i As Integer

Dim SourceWB, DestWB As Workbook

Application.ScreenUpdating = False

FolderPath = Sheet1.TextBox1.Value

'Inserting backslash in the folder path if backslash(\) is missing

If Right(FolderPath, 1) <> "\" Then

FolderPath = FolderPath & "\"

End If

'Searching for Excel files

FileName = Dir(FolderPath & "*.xlsx")

Count1 = 0

'Looping through all the Excel files in the folder

While FileName <> ""

Count1 = Count1 + 1

ReDim Preserve FileArray(1 To Count1)

FileArray(Count1) = FileName

FileName = Dir()

Wend

'Creating a new workbook

Set DestWB = Workbooks.Add

For i = 1 To UBound(FileArray)

'Finding the last row in the workbook

LastDesRow = DestWB.ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row

'Opening the Excel workbook

Set SourceWB = Workbooks.Open(FolderPath & FileArray(i))

'Pasting the copied data to last row in the destination workbook

If LastDesRow = 1 Then

'Copying all data in the worksheet to last row in the destination workbook

Range("A1", ActiveCell.SpecialCells(xlCellTypeLastCell)).Copy DestWB.ActiveSheet.Cells(LastDesRow, 1)

Else

Range("A1", ActiveCell.SpecialCells(xlCellTypeLastCell)).Copy DestWB.ActiveSheet.Cells(LastDesRow + 1, 1)

End If

SourceWB.Close False

Next

'Saving and closing a new Excel workbook

DestWB.SaveAs FileName:=FolderPath & "ConsolidatedAllColumns.xlsx"

DestWB.Close

Set DestWB = Nothing

Set SourceWB = Nothing

End Sub

이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.

여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요