여러 시트가 포함 된 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).BreakLinksws.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.