2014-12-23 6 views
0

Мне нужно изменить размер нескольких листов, чтобы получить их всегда одного размера ... и затем сохранить их все как PDF-файл. Я не знаю VBA, поэтому я делаю «код frankestein», получая фрагменты здесь и там.изменить размер нескольких листов и сохранить как PDF

Что я могу получить, это следующий код, который работает для листа T1, но не для других листов T2 и T3. Как их включить?

Sub Imprimir_PDF() 

Dim ws As Worksheet 
Dim lastRow As Long 

Set ws = ThisWorkbook.Sheets("T1") 

'find the last row with formatting, to be included in print range 
lastRow = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row 

ws.PageSetup.PrintArea = ws.Range("A2:CK" & lastRow).Address 

ThisWorkbook.Sheets(Array("T1", "T2", "T3")).Select 

Selection.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    Filename:="C:\PaintChecker\Camadas\temp.pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=True 
End Sub 

ответ

0

Вот один из способов сделать это:

Sub MakePDFs() 

    Dim sheetsToTouch As Variant 
    sheetsToTouch = Array("T1", "T2", "T3") 
    Dim sheetName As Variant 

    For Each sheetName In sheetsToTouch 
     Sheets(sheetName).Activate 
     ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("A2:CK" & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Address 
     ActiveSheet.ExportAsFixedFormat _ 
      Type:=xlTypePDF, _ 
      Filename:="C:\PaintChecker\Camadas\" & sheetName & ".pdf", _ 
      Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, _ 
      IgnorePrintAreas:=False, _ 
      OpenAfterPublish:=True 
    Next 

End Sub 
+0

Я думаю, что проблема здесь в том, что ОП пытается напечатать их все в один PDF. Я мог ошибаться. В противном случае приятно использовать массив. – peege

1

Это занимает ваш код, и заменяет ту часть, где вы получите последнюю строку с короткой петлей и установить все три листа область печати в петле ,

Затем распечатывает все три в том же формате PDF, что и указатель вашего выбора в массиве.

непроверенных:

Sub Imprimir_PDF() 

Dim lastRow As Long 
Dim count As Long 
Dim sheet As String 

'find the last row with formatting, to be included in print range 
For count = 1 To 3 
    sheet = "T" & count 
    lastRow = Sheets(sheet).UsedRange.SpecialCells(xlCellTypeLastCell).row 
    Sheets(sheet).PageSetup.PrintArea = Sheets(sheet).Range("A2:CK" & lastRow).Address 
Next count 

ThisWorkbook.Sheets(Array("T1", "T2", "T3")).Select 

Selection.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    fileName:="C:\PaintChecker\Camadas\temp.pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=True 
End Sub 
Смежные вопросы