2011-03-16 7 views

답변

2

나는 동적으로 크기를 조정하는 명명 된 범위를 VBA 메서드와 결합합니다.

먼저 명명 된 범위, MyNamedRange을 만들 : (테이블이 $ A $ 1부터 시작하여 테이블 헤더를 가지고 가정)

=OFFSET(A1,0,0,COUNTA(A:A)-1,COUNTA(1:1)) 

그럼 그냥 VBA의 라인을 실행합니다

ActiveSheet.PageSetup.PrintArea = "MyNamedRange" 
0

하는 경우를 전체 시트를 항상 인쇄하고 싶다면 실제로 인쇄 영역을 지울 수 있으며 데이터가 채워진 시트의 양이 기본값이됩니다. 열을 숨기고 싶지 않다면 wtfsven의 대답은 완벽합니다.

1

그냥 간단한 코드를 사용 :이 꽤 늦게 응답 추측

Private Sub prnt() 
On Error Resume Next 

    Cells(1, 1).Select 
    With ActiveSheet.PageSetup 
    .PrintArea = Range(ActiveCell, ActiveCell.SpecialCells(xlCellTypeLastCell)).Select.Address 
    .Orientation = xlLandscape 
    .LeftHeader = "&p/&N" 
    .LeftFooter = ActiveWorkbook.FullName 'to show address 
    .PrintTitleRows = "$1:$5" 'repeat at top 
    .Zoom = False 
    .Orientation = xlLandscape 
    .FitToPagesWide = 1 'to print in 01 page 
    .FitToPagesTall = False 'to print in 01 page 
    End With 
End Sub 
0

을 ... 이 솔루션은 위의 Excel 2007에서 나를 위해 작동하지 않았다 그래서 나는

begin_column = 1 
end_column = 5 

begin_row = 1 
end_row = 30 

'converting the numbers to uppercase letters 
temp_begin_column = Chr(first_column + 64) 
temp_end_column = Chr(second_column + 64) 

ActiveSheet.PageSetup.PrintArea = "$" & temp_begin_column & "$" & begin_row & ":$" & temp_end_column & "$" & end_row 
을 사용

이것은 복잡한 해결책처럼 보일지 모르지만 안정적으로 나를 위해 일한 유일한 것 같습니다.

0

나는 이것을 시도했습니다. 그것은 나를 위해 일했습니다.

StartColumn="A" 
StartRow=1 
EndColumn="B" 
EndRow=10 

ActiveSheet.PageSetup.PrintArea = StartColumn & StartRow & ":" & EndColumn & EndRow 
ActiveSheet.PageSetup.PrintArea = "A1:B10" 

Or 
ActiveSheet.PageSetup.PrintArea = "$" & StartColumn & "$" & StartRow & ":" & "$" & EndColumn & "$" & EndRow 
ActiveSheet.PageSetup.PrintArea = "$A$1:$B$10"