2014-04-09 3 views
1

내 통합 문서의 모든 워크 시트를 검토하는 매크로 작업을하고 있습니다.워크 시트를 PDF로 인쇄

내가 달성하고자하는 것은 pdf로 각 워크 시트를 내보내고 특정 셀 (C8)을 기반으로 명명 된 각 워크 시트의 이름을 갖는 것입니다.

Sub print_pdf() 

    Dim wb As String 
    Dim ws As String 
    Dim rng As Range 
    Dim I As Integer  

    'For Each ws In wb.Worksheets 
    ws = Activeworkbooks.Worksheets.Count 

    For I = 1 To ws 
    Set wb = ActiveWorkbook 
    Set rng = ws.Range("C8") 

    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ws.Range("C8"),  Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True 

Next ws  
End Sub 

답변

0

난 당신이 게시 코드 몇 가지 문제를 볼 수 있습니다

이것은 내가 지금까지 (나는 아직도 초보자이야)이 것입니다. 이이 검사 오류를 포함하지 않습니다, 당신이 시작 얻어야한다 (C8에 유효한 값이 있는지, 파일이 이미 등, 존재하지 않는) 나는 엑셀 2010의 코드를 테스트

Sub print_pdf() 

Dim wb As Workbook 
Dim ws As Worksheet 
Dim rngFileName As String 
Dim I As Integer 

Set wb = ActiveWorkbook 

For I = 1 To Worksheets.Count 
    wb.Worksheets(I).Activate 
    rngFileName = "C:\Temp\" & Range("C8").Value & ".pdf" 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     rngFileName, Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
     False 
Next I 
End Sub 

과 괜찮 았는데 .

것을

참고 시트 이름으로 문제를 캡처하는 오류 처리를 포함하는이 같은

0

뭔가 :

  1. For each ws 전에 시트를 활성화하기 위해 시트 수에 의해
  2. 필요가 없습니다 반복에 우수 저장 중
  3. 이 코드는 ActiveWorkbook과 같은 경로로 저장합니다.
  4. 오류 처리는 inva에 중요합니다. 수출에 덮어 쓰기됩니다
  5. 당신이 C8에서 이전 값 (들)을 중복 값이있는 경우
  6. 이름 저장 뚜껑 파일의 코드는이

코드

Sub ToPDF() 
Dim ws As Worksheet 
Dim strMsg As String 
If ActiveWorkbook.Path = vbNullString Then Exit Sub 
For Each ws In ActiveWorkbook.Sheets 
On Error Resume Next 
ws.ExportAsFixedFormat xlTypePDF, ActiveWorkbook.Path & "\" & ws.[C8] 
If Err.Number <> 0 Then strMsg = strMsg & ws.Name & vbNewLine 
On Error GoTo 0 
Next 
If Len(strMsg) > 0 Then MsgBox strMsg, vbCritical, "errors" 
End Sub 
를 테스트하는 adpated 할 수있다
관련 문제