엑셀쿠키는 한 번의 다운로드로 평생 이용하실 수 있습니다. 프로그램과 데이터를 고객의 PC에 저장하여 사용하는 형식이라 안전하게 사용 가능합니다. 이용 기간에 따른 추가 비용이 발생하지 않아 매우 경제적입니다.
중소기업의 개별 특성, 다양한 업무를 상황별로 고려하여 제작된 프로그램을 업데이트합니다. 분야별 5,000여 개의 프로그램 중 내 업무에 맞는 프로그램을 다운받는 맞춤형 서비스입니다.
쿠키 프로그램은 MS Excel의 기본 사용법만 알면 즉시 사용할 수 있는 매운 쉬운 프로그램으로 누구나 손쉽게 배우고 사용할 수 있습니다.
중소기업의 모든 업무자동화!
쿠키의 업무자동화 프로그램은 VBA 코드로 개발된 제품으로
MS Excel 프로그램 기반으로 사용 가능하며,
자체적으로 개발한 기능은 물론,
MS Excel의 강력한 기능을 모두 사용하실 수 있습니다.

엑셀쿠키는 기업의 생산성을 높이는 업무자동화 지원 프로그램입니다.
[ 기초 강좌 ]
제 9강
복사에 대하여Ⅰ
VBA - 복사
그 사용법을 알아봅니다.
이럴 때 필요해요
"복사" , "붙여넣기" 를 수행하는 방법에 대해 알고 싶을 때
이렇게 사용해요
오늘은 VBA로 "복사"하여 "붙여넣기" 까지를 수행하는 방법에 대해 알아 보겠습니다.
※ 복사기의 "복사"와 엑셀의 "복사"는 같다???
여러분의 생각은 어떠신가요
"같다"라고 해도 틀린 것은 아닐 것 입니다. 또한 "같지 않다"라고 해도 틀린 것은 아닙니다.
"같다"라고 한다면, "원본과 같은(동일한) 사본을 만든다"는 것을 말하는 것이겠지요.
"같지 않다"라고 한다면 복사기는 원본에 빛을 쏘아, 동일한 형상의 사본을 만들고 엑셀에서의 복사는
선택한 개체(복사기의 원본과 같음) 를 컴퓨터의 메모리 영역에 임시로 저장했다가 사용자가 사본을 출력하고자
하는 위치에 원본과 같은 것을 출력해 준다 뭐 그런차이가 아닐까 생각합니다.
먼저 복사할 셀을 선택하고 "복사"한 다음, 사용자가 지정한 다른 셀에 "붙여넣기"하는 아래의
매크로 버튼(<방법1>)을 눌러 보시기 바랍니다.
<방법1>
가장 기본적인 방법으로써 매크로의 진행 과정은 다음과 같습니다.
Range("B25").Select 셀(B25)을 선택한다. Selection.Colpy 선택한 셀을 복사한다. Range("D25").Select ⇒ ?복사한 것을 붙여넣을 셀(D25)을 선택한다. ActiveSheet.Paste 복사한것을 붙여넣는다. Application.CutCopyMode = False 복사한 셀의 사방에 생긴 점선을 지워버린다. |
<방법2>
다음은 방금 출력한 D25셀의 내용을 지운 다음 위 <방법2>의 Macro 실행버튼을 눌러보시고 나타나는 결과를
비교해 보시기 바랍니다. 아마 <방법1>과 마찬가지의 결과가 나타 날 것입니다.
단지 차이가 있다면 소스가 아래와 같이 단 한줄로 코딩되어 있다는 것입니다.
Range("B25").Copy Destination:=Range("D25") |
?
<방법2>
5줄의 코드를 읽고 실행하는 것 보다는 한 줄의 코드를 실행하는 것이 수행속도면에서 빠를 뿐만 아니라 효율적입니다.
앞에서의 <방법1>과 같이 셀을 선택해서 복사하고 다시 붙여넣기 할 셀을 선택한 다음, 복사한 내용을 다시 붙여넣기
하는 것이 아니고 곧장 B25 셀을 복사해서 D25셀에 붙여넣기 합니다
위 코드에서 "Destination:="은 생략해도 무방합니다.
즉, Range("B25").Copy Range("D25")로 코딩해 주어도 같은 결과를 구할 수 있습니다.
참고로 제대로 하자면 Destination:=Worksheets("강좌").Range("D25")로 코딩해야 합니다만, 여기에서 시트명(Worksheet개체)
을 생략하면, 현재 열려 있는 시트(Active Sheet)를 기본 값으로 인식합니다.
또한, 현재 시트의 특정 셀의 갑을 다른 시트에 붙여넣기 하는 방법 역시 간단합니다.
먼저, 예제Sheet를 살펴 보시고 오시기 바랍니다.
<다른 시트에 붙여넣기> 버튼을 눌러 보시기 바랍니다.
앞서 설명드린 <방법2>의 코드에서 붙여넣기할 시트 및 셀의 주소만 지정해 주면 한줄의 코드로 해결됩니다.
Range("B61").Copy Destination:=Sheets(2).Range("C5") |
그런데 만약 붙여넣기할 셀의 위치를 다른 시트의 데이터가 없는 마지막 셀로 지정할 경우에는 어떻게 해야 할까요?
매크로버튼을 눌러 보시기 바랍니다.
?코드는 아래와 같습니다.
Range("B73").Copy Destination:=sheets(2).Range("A65536").End(xIUp).Offset(1,0) Sheets(2).Select Sheets(2).Range("A65536").End(xIUp).Select |
위 코드를 해석하자면
Range("B73").Copy Destination:=Sheets(2).Range("A65536").End(xIUp).Offset(1,0)
B73셀 값을 복사한 다음, 시트2(Sheet(2))의 A열 마지막 셀 (A65536) 위치에서 위쪽으로 데이터가 있는
셀(End(xIUp))을 선택하고 다시 한칸 아래의 셀 (Offset(1,0))에 값을 붙여넣기 하시오
Sheets(2).Range("A65536").End(xIUp).Select
시트2를 선택하고(실전에서는 별로 사용하지 않지만 강좌의 편의를 위해 지정했습니다.)
Sheets(2).Range("A65536").End(xIUp).Select
시트2의 마지막 셀을 선택하시요.
위 코드를 보다 세련되게 만들면 아래와 같이 할 수도 있습니다.
복사된 것을 붙여넣기할 위치를 기억시킬(참조시킬) 변수를 선언 변수의 데이터 형식은 셀을 참조할 것이므로 Range Object가 됨 Dim rngPosition As Range 시트2에서 데이터가 없는 마지막 셀을 변수에 참조시킴 Set rngPosition = Sheets(2).Range("A65536).End(xIUp).Offset(1,0) 붙여넣기할 위치에 변수 rnsPosition을 지정하면 끝 Range("B73").Copy rngPosition Sheets(2).Select rngPosition.Select |
이와 같이 변수를 사용하면 코드가 간결해지고 가독성이 훨씬 좋아집니다.
자 그런데 이쯤에서 매크로 기능을 사용하여 복사하고 붙여넣기를 할 수 있다면 혹시 WorkSheet에서의
[선택하여 붙여넣기]-[값], 또는 [선택하여 붙여넣기]-[수식]과 같은 기능도 실행할 수 있지 않을까?
라는 의문이 드실 수도 있습니다.
같은 결과가 출력되었습니다. 그러나 방금 결과값이 출력된 셀들을 차례로 선택해서 '수식입력줄'을 살펴 보시면
분명한 차이가 있음을 아실 수 있을것입니다.
<값 붙여넣기> Range("복사범위").Copy Range("붙여넣을 위치").PasteSpecial xIPasteValues Application.CutCopyMode = False 일단 범위를 복사하기 선택하여 붙여넣기(PasteSpecial) 값만 붙여넣기(xIPasteValues) 복사된 셀의 점선 테두리를 없애기 |
<수식 붙여넣기> Range("복사범위").Copy Range("붙여넣을 위치").PasteSpecial Paste:=xIPasteFormulas
일단 범위를 복사하기 선택하여 붙여넣기 - 수식으로 붙여넣기(xIPasteFormulas) 복사된 셀의 점선 테두리를 없애기
|
※위 두 코드의 차이점을 잘 살펴 보시기 바랍니다.
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.
![[VBA 제 09강] 복사에 대하여Ⅰ [VBA 제 09강] 복사에 대하여Ⅰ](/common/images/cmm/view_middel.jpg)