2013-03-27 2 views
0

하나의 PDF 파일로 선택하고 변환하려는 통합 시트가 있습니다.특정 시트 순서로 PDF에 시트 배열을 저장하는 방법

Sub Print_Project_Report_To_PDF 

    Dim FilePathandName As String 
    MyDate = Format(DateSerial(Year(Now), Month(Now) - 1, 1), "mmmm yyyy") 
    MyPath = ThisWorkbook.Path & "\" 
    MyFile = "Project Progress Report - " & MyDate & ".pdf" 
    FilePathandName = MyPath & MyFile 

    ThisWorkbook.Sheets(Array("PR_COVER_PAGE", "PR_SUMMARY", _ 
    "PR_PROJECT_DETAILS", "PR_INTERNAL RESOURCES", "PR_TIME", _ 
    "PR_REVENUE_FORECAST_SUMMARY", "PR_ORIGINAL_REVENUE_FORECAST", _ 
    "PR_ACTUAL_REVENUE_FORECAST", "PR_COSTS", "PR_ISSUES", "MONTHLY FINANCIAL REPORT", _ 
    "PG-SC_COVER_LETTER", "PG-SC_CLAIM_SUMMARY", "PG-SC_TRADE", "PG-SC_HYDRAULICS", _ 
    "PG-SC_MECHANICAL", "PG-SC_MEDICAL_GASES", "PG-SC_ELECTRICAL", "PG-SC_VARIATION", _ 
    "PG-SC_MONTHLY_CASHFLOW", "PG-MH_COVER_LETTER", "PG-MH_CLAIM_SUMMARY", _ 
    "PG-MH_TRADE", "PG-MH_HYDRAULICS", "PG-MH_MECHANICAL", "PG-MH_MEDICAL_GASES", _ 
    "PG-MH_ELECTRICAL", "PG-MH_VARIATION", "PG-MH_MONTHLY_CASHFLOW", "CLIENT_COVER", _ 
    "CLIENT_SUMMARY", "CLIENT_ISSUES")).Select 

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FilePathandName, _ 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, OpenAfterPublish:=True 

    ThisWorkbook.Sheets("Dashboard").Select 

End Sub 

문제는 PDF 파일을 내가 배열에서 지정한 순서로 시트로 생성되지 않는 것입니다 :

나는 잘 작동하고 파일을 만들고 다음 코드를 작성했습니다. 그들은 Workbook (왼쪽에서 오른쪽)에 나타나는 순서대로 있습니다. 그것은 내가 원하는 순서로만 원하는 시트를 포함합니다.

특정 프로그레시브 방식으로 설정 되었기 때문에 통합 문서에서 시트 순서를 변경하지 마십시오.

누구든지 문서를 게시 할 때 시트 순서와 관련된 특정 코드를 알려줄 수 있습니까?

도움을 주시면 감사하겠습니다.

+2

원하는 순서대로 용지를 다시 정렬 한 다음 인쇄가 완료되면 통합 문서를 저장하지 않고 닫고 설정이 그대로 유지됩니다. –

+1

또는 새 통합 문서를 만들고 해당 통합 문서를 필요한 주문을 한 다음 해당 통합 문서를 인쇄하십시오. 인쇄가 끝나면 저장하지 않고 새로 만든 통합 문서를 닫습니다. –

답변

0

@SiddharthRout에 동의합니다. 아래의 첫 번째 아이디어/의견에 동의합니다. 그러나, 나는 복잡한 파워 포인트 프레젠테이션을 인쇄 매우 비슷한 상황에서 나는

PDFCreator application

내가 그 소프트웨어 및 설정 '스톱 인쇄'옵션을 실행하는 첫 번째 단계에서 사용합니다. 워크 시트를 인쇄하는 방식으로 각 워크 시트를 개별적으로 소프트웨어에 전송하면 처음부터 올바른 순서로 목록에 쌓여있는 별도의 문서가 될 수 있습니다. 특수 기능을 사용하면이를 한 문서에 일치시키고 인쇄 할 수 있습니다. 매우 유용하고 신뢰할 수있는 솔루션입니다.

+0

수동 프로세스일까요? –

+0

예, 약간, 세 가지 수동 단계가 있습니다 - PDFCreator에서 '인쇄 시작 및 인쇄 중지', VBA 자동화 된 시트 인쇄, PDFCreator에서 '병합 문서' –

0

다음은 현재 통합 문서를 임시 파일로 복사하고 시트 목록을 재정렬하는 몇 가지 샘플 VBA 코드입니다. 인쇄하기 전에 이러한 루틴을 사용

Sub CopyAndReorder() 
    Dim wbCopy As Workbook 
    ThisWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS" 
    Set wbCopy = Workbooks.Open("C:\TEMP\XXXX.XLS") 
    ReorderSheets wbCopy 
End Sub 

Sub ReorderSheets(wb As Workbook) 
    Dim shNames As Variant, shName As Variant, sh As Worksheet 
    shNames = Array("Table3", "Table2", "Table1") 
    For Each shName In shNames 
     Set sh = wb.Sheets(shName) 
     sh.Move After:=wb.Sheets(wb.Sheets.Count) 
    Next 
End Sub 

을 (당신은 여러분의 필요에이 코드를 적용해야 물론, 이후에 새로운 파일을 삭제, 더 나은 임시 파일 이름을 사용하여 외부에서 시트의 목록을 제공, 등,하지만 당신이 생각을 얻을 것).