2014-02-21 2 views
0

이 검색을 많이 시도했지만 만족스러운 답변을 찾을 수 없습니다. 재 게시자라면 미안해.머리글 행을 첫 번째 파일부터 유지하면서 여러 Excel 파일 병합

기본적으로 여러 Excel 파일을 하나의 통합 문서로 병합하는 것이 좋습니다. 나는 단지 첫 번째 Excel 파일의 머리글 행을 유지하고 나머지 Excel 파일의 머리글 행은 무시합니다 (모두 동일하므로). 따라서 최종 결과는 첫 번째 Excel 파일의 Header + 데이터 여야하며 나머지 Excel 파일에서는 첫 번째 파일과 비슷한 열 머리글이있는 첫 번째 행이 아니라 데이터 행 만 필요합니다. 아래의 복사는 모든 Excel 파일의 모든 행과 열을 붙여 넣습니다. 도와 주셔서 감사합니다.

For wbCounter = 1 To UBound(books) 

       Set wbSource = oExcel.Workbooks.Open(books(wbCounter)) 
       For wsCounter = 1 To wbSource.Sheets.Count 
        Set wsSource = wbSource.Sheets(wsCounter) 

        If wsSource.Name Like selectSheetStr Then 
         emptySheet = True 

         If cbOptionIgnoreEmpty.Value = True And wsSource.UsedRange.Address = "$A$1" Then 
          emptySheet = True 
         Else 
          emptySheet = False 
         End If 

         If emptySheet = False Then 
          mergedWorksheetName = wsSource.Name 

          sheetExist = SheetExists(mergedWorksheetName, wbResult) 
          If (cbOptionAppendData.Value = True And sheetExist = True) Then 
           Set wsMergeResult = wbResult.Sheets(mergedWorksheetName) 
           wsSource.UsedRange.Copy 
           wsMergeResult.Cells(wsMergeResult.UsedRange.Rows.Count + 1, 1).Resize(wsSource.UsedRange.Rows.Count, wsSource.UsedRange.Columns.Count).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone 
           mergedWorksheetCount = mergedWorksheetCount + 1 
           'Name of Worksheet 
           wsResult.Cells(mergedWorksheetCount + 1, 1) = wsMergeResult.Name 
           'Fullpath of Workbook 
           wsResult.Cells(mergedWorksheetCount + 1, 2) = wbSource.FullName 
          Else 
           wsSource.Copy After:=wbResult.Sheets(wbResult.Sheets.Count) 
           mergedWorksheetCount = mergedWorksheetCount + 1 
           wsResult.Cells(mergedWorksheetCount + 1, 1) = .ActiveSheet.Name 
           wsResult.Cells(mergedWorksheetCount + 1, 2) = wbSource.FullName 
          End If 
         End If 
        End If 
       Next wsCounter 
       wbSource.Close SaveChanges:=False 
      Next wbCounter 

답변

0

선을 교체하려고 자신의 세포를 그 통합 문서를 열고 수정합니다 코드 ...

wsSource.UsedRange.Copy 

... with :

wsSource.UsedRange.Resize(wsSource.UsedRange.Rows.Count - 1, wsSource.UsedRange.Columns.Count).Offset(1, 0).Copy 

이렇게하면 사용 된 범위에서 frist 행을 제외하고 복사해야합니다.

+0

감사 Soren. 나머지 Excel 파일에서 열 이름을 제거합니다. 당신이 신경 쓰지 않기를 바라는 한가지 더 말하면, 나머지 Excel 파일에 1 행의 레코드가있는 경우, 행을 두 번 붙여 넣는 복사입니다. 따라서 두 번째 엑셀 시트의 레코드 (한 행 레코드 만 사용)는 마스터 엑셀 파일에 두 번 복사됩니다 (최종 통합 된 엑셀 통합 문서를 의미 함). 왜 그럴 수 있니? 도움을 주셔서 다시 한번 감사드립니다. – Kashif77

+0

나는 두 번째 질문을 성급하게 이해하지 못한다는 것에 대해 사과한다. 아마도 새로운 질문에 이것을 기술하는 것이 더 낫겠습니까? Pleace가 당신을 위해 일하면 답을 받아들입니다. –

+0

감사합니다. Soren. 나는 새로운 질문을 추가 할 것이다. – Kashif77

-1

이 코드는 특정 폴더에 당신에게 모든 파일의 경로를 얻을 것이다

Option Explicit 
Sub CountRows() 

    Dim MyObject As Scripting.FileSystemObject 
    Set MyObject = New Scripting.FileSystemObject 
    Dim mySource As Folder 
    Dim myFile As Scripting.File 

    Dim strPath As String 

    Set mySource = MyObject.GetFolder("D:\") ' or any other folder 
    For Each myFile In mySource.Files 
     strPath = myFile.Path 
    Next 
End Sub 

dim wrkbook as workbook 
set wrkbook = workbooks.open(strPath) ' the path comes from the code above 
'modify the workbook 
wrkbook.worksheets.item(1).cells(1, 1) = "something" 
관련 문제