엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 로직을 구현한 매크로 만들기


엑셀에서 VBA(Visual Basic for Application)는 정말 다양한 용도로 활용됩니다.
엑셀 작업 과정에 어렵고 복잡한 프로세스 구현도 VBA를 통해 구현이 가능해 집니다.

엑셀에서 VBA 로직을 구현하다 보면 가끔 셀을 복사해서 붙여넣기 하는 작업을 구현해야 할 때가 있습니다.
VBA 프로그램으로 복사하기와 붙여넣기는 비교적 간단하게 구현이 가능합니다.

이번 글에서는 복사할 범위를 지정하고, 붙여 넣기를 할 때 엑셀 시트에 보이는 셀만 복사하여 붙여넣기 하는 로직을 구현한 매크로를 만들고 실행하는 방법에 대해 알아보겠습니다.

엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 하는 로직 구현

1. 엑셀에서 VBA(Visual Basic for Application)를 만들기 이해 상단 개발 도구 탭을 선택하고 코드 항목에서 [Visual Basic]을 클릭해서 VBA 화면을 엽니다.
만약 개발 도구 탭이 보이지 않는 경우 엑셀에서 VBA(매크로)를 처음으로 시작할 때 참고하세요. 글을 참고하시면 됩니다.

엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 하는 로직 구현 - VBA 만들기

2. 새로운 VBA 프로그램을 만들기 위해 [삽입] 메뉴에서 [모듈]을 클릭해 줍니다.

엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 하는 로직 구현 - 모듈 추가하기

3. 아래 작성한 VBA 프로그램 Source를 편집기에 작성하고 저장한 다음 VBA 창을 닫습니다.

▼ VBA 매크로 – 보이는 셀만 복사,붙여넣기 프로그램 소스

Sub 보이는_셀만_복사()
‘ 보이는 셀만 복사하는 VBA 예제
 
‘   Range로 복사할 범위를 지정하고 Copy로 복사
    Range(“A1:C10”).SpecialCells(xlCellTypeVisible).Copy
    
‘  붙여넣기 할 시트를 선택
    Sheets(“PasteSheet”).Select
    
‘  붙여넣기 구문 
    Range(“A1”).Select
    mitRows = Cells(Rows.Count, “A”).End(xlUp).Row
    Range(“A” & mitRows + 1).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range(“A1”).Select
    
    MsgBox “보이는 셀만 복사/붙여넣기 완료”
 
End Sub
 

※ 프로그램을 간단히 설명하면 “Sub 보이는_셀만_복사” 부분은 매크로 이름이 됩니다.
실행하게 되면 셀 A1에서 C10까지의 셀들을 복사해서 “PasteSheet“라는 별도 시트에 붙여넣기를 합니다.
이때 보이는 셀만 붙여넣기가 됩니다. 그리고 “PasteSheet”라는 시트는 미리 만들어 놓아야 에러가 발생하지 않습니다.

엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 하는 매크로 실행하기

1. 만들어 놓은 VBA 프로그램을 실행하기 위해 [개발 도구]에서 [매크로]를 선택해서 매크로 실행 화면을 엽니다.

2. 방금 만든 “보이는_셀만_복사“가 매크로 리스트에 나타납니다. “보이는_셀만_복사“를 선택하고 실행 버튼을 클릭해 줍니다.

엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 하는 매크로 실행하기 1

7. “PasteSheet”라는 시트에 보이는 셀만 붙여넣기 된 것을 확인할 수 있습니다.

8. 실행 과정에 에러가 없다면 마지막 VBA 구문에 있는 “MsgBox“가 실행되어 “보이는 셀만 복사/붙여넣기 완료” 팝업창이 뜨게 됩니다.

엑셀 VBA에서 보이는 셀만 복사하여 붙여넣기 하는 매크로 실행하기 2


※ 이해를 돕기 위해 복사할 셀을 미리 “Range(“A1:C10″)” 이렇게 지정을 했는데 필요에 따라 가변적인 범위를 지정할 수 있도록 프로그래밍 할 수 있습니다. 그리고 붙여넣기 위치를 별도의 시트로 했지만 동일 시트의 특정 셀 위치를 지정해서 붙여넣기를 할 수도 있습니다.

※ 참고로 워크시트의 마지막 셀의 위치를 찾는 방법은 엑셀 VBA에서 워크시트의 마지막 셀 위치(Rows, Columns, Cell Address)를 가져오는 방법 글을 참고하시면 됩니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기