여러 시트가 포함 된 Excel (.xlsx) 파일을 어떻게 별도의 시트 [n] .xlsx에 "분할"할 수 있습니까?


17

제목 에이 질문에 대한 내용이 있지만 조금 더 자세히 설명한다고 생각합니다.

수십 장의 .xlsx 파일이 있습니다. 모든 시트를 별도의 .xlsx 파일로 출력하고 싶습니다. 자동 이름 지정은 필요하지 않습니다. Excel에는 시트를 별도의 파일로 내보내는 기능이 있습니까?

답변:


17

내장 기능이 아닙니다.

그러나이 코드를 실행하면 작업을 수행해야합니다.

Sub SaveSheets()
    Dim strPath As String
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    strPath = ActiveWorkbook.Path & "\"
    For Each ws In ThisWorkbook.Sheets
        ws.Copy
        'Use this line if you want to break any links:
        BreakLinks Workbooks(Workbooks.Count)
        Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx"
    Next

    Application.ScreenUpdating = True
End Sub

Sub BreakLinks(wb As Workbook)
    Dim lnk As Variant
    For Each lnk In wb.LinkSources(xlExcelLinks)
        wb.BreakLink lnk, xlLinkTypeExcelLinks
    Next
End Sub

코드를 실행하려면 다음을 수행하십시오.

  1. VBA 편집기를 엽니 다 ( Alt+ F11)
  2. 왼쪽 상단의 트리에서 통합 문서를 마우스 오른쪽 단추로 클릭하고 새 모듈을 삽입하십시오.
  3. 위 코드를이 모듈에 복사
  4. VBA 편집기를 닫습니다
  5. Excel에서 Alt+ F8를 눌러 매크로를 실행하고SaveSheets

또는 MS Office에서 VBA를 어떻게 추가합니까?를 참조하십시오 .


감사! 다시 되돌리려면 반대는 어떻습니까? 이 Excel 파일에는 분명히 "링크"가 포함되어 있습니다 (이 기능은 이전에 사용하지 않았습니다). 분할 후 Excel에서 링크를 찾을 수 없습니다 (첫 번째 시트를 찾고 있음). 그것들을 분리하고 동시에 링크를 업데이트하거나 링크를 업데이트해야합니까?
— eichoa3I

1
문제는 링크를 처리하는 방법입니다. 당신은 쉽게 삽입하여 값을 대체 할 수있는 Workbooks(Workbooks.Count).BreakLinks후 ws.Copy...
— 피터 알버트에게

하나의 통합 문서를 연 후 Excel의 팝업 창이 링크를 수정하라는 메시지를 표시했습니다. 이 대화 상자를 클릭하면 모든 파일에 대한 링크가 작동합니다. 이것이 파일 또는 로컬로 저장되었는지 궁금합니다.
— eichoa3I

Workbooks (Workbooks.Coun) .BreakLinks로 값으로 바꾸면 링크가 삭제되었거나 ...? 나는 그것들을 처리하는 가장 좋은 방법은 단순히 그것들을 제거하는 것이라고 생각합니다 (즉, 사용자가 이제 분리 된 Excel 파일을 열면 깨진 링크에 대한 경고가 표시되지 않습니다).
— eichoa3I

죄송합니다, 마지막에Workbooks(Workbooks.Count).BreakLinks
— Peter Albert

11
  1. Excel 시트의 탭을 마우스 오른쪽 버튼으로 클릭하면 이동 또는 복사 ...를 선택할 수 있습니다 .

    여기에 이미지 설명을 입력하십시오

  2. 결과 대화 상자에서 대상 통합 문서를 선택할 수 있습니다. (새 책)을 선택하십시오 .

    여기에 이미지 설명을 입력하십시오

  3. 확인을 클릭하십시오 . 시트가 이제 새 문서 안에 있습니다.


8

Peter Albert의 솔루션을 사용해 보았지만 효과가 없었기 때문에 Diary of a computer geek 에서이 게시물 (“Excel – 워크 시트를 별도의 파일로 저장”)에서 해결책을 찾았습니다 .

잘 작동합니다. .xls확장자가있는 파일 이름을 올바르게 얻으려면 점이 포함 된 시트의 이름을 바꿔야 합니다.

Sub CreateNewWBS()
Dim wbThis As Workbook
Dim wbNew As Workbook
Dim ws As Worksheet
Dim strFilename As String

    Set wbThis = ThisWorkbook
    For Each ws In wbThis.Worksheets
        strFilename = wbThis.Path & "/" & ws.Name
        ws.Copy
        Set wbNew = ActiveWorkbook
        wbNew.SaveAs strFilename
        wbNew.Close
    Next ws
End Sub

Peter Albert의 게시물 또는 MS Office에서 VBA 를 어떻게 추가합니까? 에서이 매크로를 생성하고 실행하려면 지침을 사용하십시오 .


1
또한 Peter Albert의 솔루션을 사용해 보았으며 "런타임 오류 '13': 유형이 일치하지 않습니다.이 답변의 해결책은 저에게 효과적입니다.
— Bin

기존 파일을 같은 이름으로 덮어 쓰려면 어떻게해야합니까?
— DAE

각 덤프가 별도의 폴더로 이동하기 때문에 이것이 필요하지 않았습니다. 어쩌면 노력 이 스레드
— hrvoj3e

귀하의 솔루션은 :) 나를 위해 일한
— 무하마드 와히드에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.