동적 시트를 하나의 문서로 인쇄


2

다음과 같이 구조화 된 스프레드 시트가 있습니다.

  • 상단의 요약 섹션
  • 하단의 상세 섹션
  • 요약 섹션은 자동 필터를 사용하여 필터링 된 세부 섹션을 요약합니다.

개별적으로 인쇄해야하는 10 가지 제품이 있지만 모든 인쇄 작업의 전체 페이지 위치와 총 페이지 수를 페이지 바닥 글에 표시하려고합니다.

그것은 아마도 명확하지 않습니다. 예를 들어 두 페이지의 제품 A보기를 인쇄하면 페이지 1의 2와 2의 2가 인쇄됩니다. 한 페이지의 제품 B를 인쇄하면 1의 페이지가 표시됩니다. 원하는 것은 모두 인쇄하고 제품 A 쇼 3 페이지 중 1 페이지, 페이지 2/3 및 제품 B는 3 페이지입니다. 이것을 수행 할 방법이 있습니까?

최신 정보: 엑셀 만 대답하길 바랬는데 아무도 대답을 제공 할 수 없었습니다. 내가 사용하는 해결 방법을 게시 할 예정입니다. 나는 내 자신의 대답을 선택하기 전에 조금 더 열어 두겠습니다.

업데이트 2 : Thomas에게는 올바른 대답이 있습니다 - Excel / VBA 전용!


나는 이것으로 도울 수 있지만 좀 더 많은 정보가 필요합니다. 함께 사용할 샘플 스프레드 시트를 보내 주시겠습니까? 나는 과거에 이런 일을 해왔다.
user26455

샘플 파일을 어떻게 가져야합니까?
Sux2Lose

페이지 설정으로 이동하고 머리글 / 바닥 글 탭에서 바닥 글을 "페이지 1 중?"으로 설정 한 경우 그게 네가 한 일을하지 않니?
Xantec

@Xantec No. 각 필터를 적용한 후 인쇄하면 "?" 그 필터의 크기입니다. 내가 원하는 것은 각 페이지의 꼬리말에 "Page X of 15"를 읽으려는 15 가지 1 페이지 뷰를 인쇄하는 경우입니다. 이 솔루션은 "페이지 1 / 1"로만 15 페이지를 제공합니다.
Sux2Lose

답변:


3

여기에는 두 가지 질문이 있습니다.

  1. 페이지 번호를 바닥 글에 넣는 방법
  2. 실행 방법은 각 필터가 적용된 후 여러 개의 자동 필터 인쇄를 적용합니다.

먼저 페이지 설정에서 다음과 같이 할 수 있습니다.

enter image description here

  1. 페이지 설정으로 이동 :
  2. 머리글 / 바닥 글을 클릭하십시오.
  3. "사용자 정의 바닥 글 ..."버튼을 클릭하십시오.
  4. 섹션 중 하나에서 "페이지 & amp; [페이지]"를 입력하십시오. 표시 할 코드를 나타냅니다. Page 1 of 2, Page 2 of 2 등등.

두 번째 작업을 수행하려면 매크로가 필요합니다. 즉, 파일을 매크로 사용 가능 파일 (xlsm)로 저장해야합니다. 일단 그렇게하면 개발자 탭을 다음과 같이 표시해야합니다.

  1. Excel 창의 왼쪽 상단 구석에있는 꽃을 클릭하고 "Excel 옵션"을 선택하십시오.
  2. '인기있는 항목'섹션이 선택되어 있는지 확인하십시오.
  3. "리본에서 개발자 탭 표시"가 선택되어 있는지 확인하십시오.

매크로를 관리하기 위해 버튼을 볼 수있게되었으므로 다양한 필터를 적용하고 각 필터 다음에 인쇄하는 프로세스를 자동화 할 수있는 매크로를 기록해야합니다.

  1. 개발자 탭을 클릭하십시오.
  2. "매크로 기록"버튼을 클릭하십시오.
  3. 레코딩이 켜지면 자동화 할 프로세스를 실행하십시오. 즉, 필터를 적용하고 인쇄하고 다른 필터를 적용하고 인쇄합니다.

매크로는 VBA (Visual Basic for Applications)로 작성되고 다음과 같이 나옵니다.

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=a*", _
    Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=b*", _
    Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False

부가

당신이 언급 한 것을 감안할 때, 나는 다음과 같은 함수를 사용하여 친밀해질 수 있다고 생각한다 :

Public Sub GetTotalPageCount()
    Dim horizontalBreaks As Integer
    Dim verticalBreaks As Integer

    horizontalBreaks = ActiveSheet.HPageBreaks.Count + 1
    verticalBreaks = ActiveSheet.VPageBreaks.Count + 1

    GetTotalPageCount = horizontalBreaks * verticalBreaks
End Sub

원하는 전반적인 결과를 얻으려면 다음 의사 코드와 비슷한 것을 할 수있는 무언가를 만들어야합니다.

  • 필터 적용
  • 전역 변수에 페이지 수 추가
  • 필터 적용
  • 전역 변수에 페이지 수 추가

...

  • (마지막 필터 이후) ActiveSheet.PageSetup.CenterFooter = "Page &P of " & g_TotalPages
  • 필터 적용
  • 인쇄
  • 필터 적용
  • 인쇄

...


+1이 철저한 대답이지만,이 질문에는 대답하지 않습니다. 나는 총 페이지 수를 모든 다양한보기의 페이지 수로해야합니다. 따라서 15 개의 한 페이지 뷰를 인쇄하는 경우 각 페이지의 바닥 글에 "페이지 X / 15"를 표시해야합니다. 이 솔루션은 "페이지 1 / 1"로만 15 페이지를 제공합니다.
Sux2Lose

지금까지 내가 아는 한, 현재 시트를 인쇄 할 때 필요한 페이지 수를 결정할 수있는 방법이 없습니다. 여하튼 (가능한 경우) 모의 인쇄를 통해 인쇄 된 총 페이지 수를 얻고, 바닥 글을 해당 수로 변경 한 다음 실제로 인쇄 할 수있는 매크로를 실행해야합니다. 아마도 페이지 번호를 사용하고, PDF로 인쇄하고, PDF를 결합하기 위해 무언가를 사용하는 것이 더 쉬울 것입니다.
Thomas

@ Sux2Lose - 사실. 방법이있을 수 있습니다. 몇 가지 업데이트를 게시하겠습니다.
Thomas

@ 토마스 그래, 그게 해결 방법이야. Acrobat에서는 여러 PDF에서 페이지를 쉽게 가져올 수 있습니다. 나는 갱신을 고대한다.
Sux2Lose

@ Sux2Lose - 내 업데이트를 게시했습니다. 새 필터를 적용 할 때 ActiveSheet.HPageBreaks가 새로 고쳐진다고 가정하면 전체 페이지 수를 얻을 수 있습니다. 그 부분, 나는 체크하지 않았다.
Thomas

0

내가 사용하고있는 해결 방법은 다음과 같습니다.

  1. VBA를 사용하여 내 프린터를 Adobe Acrobat Pro로 변경하십시오.
  2. VBA를 사용하여 필터를 파일 이름으로 사용하여 각 뷰를 다른 PDF 파일로 인쇄합니다.
  3. Adobe Acrobat에서 모든 파일을 하나의 마스터 파일로 가져옵니다.
  4. Adobe Acrobat에서 페이지 번호를 추가하십시오.

엑셀 / VBA 솔루션 만 있으면 좋겠지 만 가능하지는 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.