행높이와 열너비 저장 및 복원
엑셀에서 복사를 하면 그대로 서식까지 복사가 되면서 행높이, 열너비까지 그대로 복사가 되는 경우라면 고민을 할 필요가 없습니다.
그런데 서식은 복사되는데 행높이, 열너비 정보는 가져오지 못하는 경우가 있어서 이걸 해결하기 위해서 고수분의 도움을 받았고 나머지는 제가 구현을 했습니다.
고수분이 알려주신 로직은 함수로 만들어서 깔금하게 처리했더군요. 전 그냥 기본 수준으로 처리했습니다.
엑셀의 행높이와 열너비를 구해서 파일로 저장하는 VBA 코드입니다.
첨부된 파일은 아래 코드입니다. 다운로드 받아서 텍스트 에디터로 열어서 복사하여 붙여넣기 하면 됩니다.
VBA 실행방법을 잘 모르시는 분은 http://link2me.tistory.com/565 참조해서 따라하면 금방 이해될 겁니다.
Sub Save_RowHeight()
Dim i%, Col As Variant, Ro As Variant
ReDim Ro(1 To 30)
For i = 1 To 30 '// 행의 개수는 필요한 경우 수정해줌
Ro(i) = Cells(i, 1).RowHeight
Next i
Open ThisWorkbook.Path & "\ro.css" For Output As #1
Print #1, Join(Ro, ",")
Close #1 '// 작업을 마치고 파일을 닫는다
ReDim Col(1 To Columns("Y").Column)
For i = 1 To Columns("Y").Column
Col(i) = Cells(1, i).ColumnWidth
Next i
Open ThisWorkbook.Path & "\col.css" For Output As #2
Print #2, Join(Col, ",")
Close #2 '// 작업을 마치고 파일을 닫는다
End Sub
저장된 파일에서 읽어서 행높이와 열너비를 자동으로 지정하는 VBA 코드입니다.
행높이와 열너비라서 저장된 파일이 한줄이라서 파일 여러줄을 읽을 필요가 없는 경우입니다.
그래서 줄의 마지막까지 데이터를 읽어서 처리하는 형태가 아님
Sub Get_RowHeight()
Dim strTemp As String
Dim varTemp As Variant
Dim i, j As Integer
Application.ScreenUpdating = False '// 화면 업데이트 (일시)정지
Open ThisWorkbook.Path & "\ro.css" For Input As #1
Line Input #1, strTemp
varTemp = Split(strTemp, ",")
For i = 0 To UBound(varTemp)
Cells(i + 1, 1).RowHeight = Val(varTemp(i))
Next i
Close #1 '// 파일번호 닫기
Open ThisWorkbook.Path & "\col.css" For Input As #2
Line Input #2, strTemp
varTemp = Split(strTemp, ",")
For j = 0 To UBound(varTemp)
Cells(1, j + 1).ColumnWidth = Val(varTemp(j))
Next j
Close #2 '// 파일번호 닫기
End Sub
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
파일의 유효기간 설정하여 날짜 지나면 자동 삭제 (0) | 2015.03.30 |
---|---|
[VBA] 중복데이터 색깔표시, 중복제거, 정렬 (2) | 2015.03.08 |
엑셀내 모든 이미지 지우는 VBA (0) | 2015.02.18 |
셀분리하여 특정열 마지막 데이터에 저장 (0) | 2015.01.28 |
중복개수 표시 VBA (효율적인 메모리, CPU 부하방지) (0) | 2014.12.12 |