티스토리 뷰

반응형


저~엉말로 오랜만에 포스팅을

하는 거 같다....

반갑기까지 한데 ㅎㅎㅎ

오늘은 VB 6.0으로 엑셀 핸들링하기에 대해서

좀 기록을 남겨볼까 한다.

이게 그리 어려운건 아닌데, 안하면 자꾸 까먹는다..

-_-;;

자주자주 봐 줘야 하는데, 그게 잘 안되네..쩝..

.
.
.


우선

기본적인 준비물. 폼을 한개 열어주고,

엑셀개체를 참조한다.

그리고 다음의 문장을 사용해서 엑셀개체를 호출한다.

Dim ExcelDB             As Excel.Application

Set ExcelDB = New Excel.Application
ExcelDB.Workbooks.Open (App.Path & "\아무거나.xls")
ExcelDB.Worksheets("sheet1").Select



아는 사람은(& 눈치빠른 사람은 ㅋㅋㅋ) 다 알겠지만, 간단히 위 코드를 설명하자면 다음과 같다.

 

Dim ExcelDB             As Excel.Application ''// Excel 개체를 생성하고 담을 변수 선언

Set ExcelDB = New Excel.Application ''// 본격 Excel개체 메모리에 올리고 변수에 위치 저장
ExcelDB.Workbooks.Open (App.Path & "\아무거나.xls") ''// WorkBooks는 핸들링 하려고 하는 Excel파일이라고 생각하면 됨
ExcelDB.Worksheets("sheet1").Select ''// 아무거나 파일의 sheet1을 지정.



여기까지 했으면 50%는 끝났다.

그 다음으로 오늘 하려고 하는 행 복사와 셀 테두리에 대해서 정리하겠다.

1. 행복사


위 그림에서 보이듯 1~3의 모든 행을 복사해서 4~6행으로 몽땅 붙여넣기를 할 작정이다.

이렇게 하려면 다음과 같은 코드를 사용하면 된다. 주석을 바로 달겠다.

''// EntireRow.Copy.. 말 그대로 전체행을 복사하겠단 뜻. 그래서 Range의 시작점은 중요하지만, 끝점은 중요하지 않다.)
ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(1, 10)).EntireRow.Copy

''// 여기서는 PasteSpecial (xlPasteAll)이 키포인트. xlPasteAll에서 알 수 있듯이 그냥 닥치고 Ctrl+v란 뜻...

ExcelDB.Range(4, 1), ExcelDB.Cells(4, 10)).EntireRow.PasteSpecial (xlPasteAll)


※참고로 PasteSpecial의 인자값으로 들어가는 속성 즉, XLPasteType은 다음과 같다.

Const xlPasteAll = -4104 (&HFFFFEFF8)
Const xlPasteAllExceptBorders = 7 
Const xlPasteAllUsingSourceTheme = 13 
Const xlPasteColumnWidths = 8 
Const xlPasteComments = -4144 (&HFFFFEFD0) 
Const xlPasteFormats = -4122 (&HFFFFEFE6) 
Const xlPasteFormulas = -4123 (&HFFFFEFE5) 
Const xlPasteFormulasAndNumberFormats = 11 
Const xlPasteValidation = 6 
Const xlPasteValues = -4163 (&HFFFFEFBD) 
Const xlPasteValuesAndNumberFormats = 12 

이 상수들이 무엇을 뜻하는지는 역시 눈치빠른 사람은 알아 챌 것이다.

한번쯤 생각해 보고 아래를 펼쳐보도록.


 


에.... 여기까지가 복사해서 붙여넣기였고... 다음은

2. 셀 테두리선 설정

셀 테두리도 복사해서 붙여넣기와 별반 다를게 없다.

하지만, 테두리는 사각형 기준 왼쪽, 오른쪽, 위쪽, 아래쪽 네군데를 생각해야 하고

또, 테두리 속성(선 굵기와 선 종류)까지 생각해야 하기 때문에,

자신이 구상한 그림이 나오려면 조금은 더 신경을 써야 한다.

셀 테두리는 위 그림에서 나오는 속성을 코드로 표현 한다고 보면 된다.

테두리 속성을 위한 코드는 다음과 같다.

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeTop).LineStyle = xlDot

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeTop).Weight = xlHairline
 

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeBottom).LineStyle = xlContinuous

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeBottom).Weight = xlThin
 

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeLeft).LineStyle = xlContinuous

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeLeft).Weight = xlThin
 

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeRight).LineStyle = xlContinuous

ExcelDB.Range(ExcelDB.Cells(1, 1), ExcelDB.Cells(5, 5)).Borders(xlEdgeRight).Weight = xlThin

여기에서 포인트는 Borders의 인자값으로 들어가는 xlEdgeTop, Bottom, Left, Right

네가지 속성과 선의 종류 LineStyle, 선 굵기 Weight 정도 이니 이해하기를 바란다.

그냥 봐도 중학교수준의 영어단어를 알고 있다면(요즘은 초등학교 무시하면 안되지만...)

그리어렵지는 않을 것이다.

그럼 LineSytle속성 상수값과 Weight속성의 상수값을 정리 해 보겠다.

(솔직히 top,bottom,left,right는 안해도 되잖아...)

==========================================================
LineStyle

Const xlContinuous = 1
Const xlDash = -4115 (&HFFFFEFED)
Const xlDashDot = 4
Const xlDashDotDot = 5
Const xlDot = -4118 (&HFFFFEFEA)
Const xlDouble = -4119 (&HFFFFEFE9)
Const xlLineStyleNone = -4142 (&HFFFFEFD2)
Const xlSlantDashDot = 13


==========================================================
Weight

Const xlHairline = 1
Const xlMedium = -4138 (&HFFFFEFD6)
Const xlThick = 4
Const xlThin = 2

역시 위 상수값들이 무얼 뜻하는지는 따로 설명하지 않겠다.

급하면 다 되게되어있다. ㅎㅎㅎ

위에서도 말했지만 해봐야 는다...
 



우왕....

간만에 좀 의미있는 포스팅을 해서 나름대로 뿌듯하다.

일하면서 정리하는 거라 내용이 좀 두서가 없지만 그래도 좋다...ㅋ





블로그코리아에 블UP하기

반응형
댓글
반응형
05-17 05:57
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함