엑셀 VBA로 붙여넣기 10초 만에 자동 정리하는 매크로 실전 샘플

2026-08-10 · 테크 · 읽는데 9분

엑셀 VBA로 붙여넣기 자동 정리, 이 코드만 알면 복붙 지옥에서 탈출합니다

복사-붙여넣기를 반복하다 보면 어느새 점심시간이 지나가 있는 경험, 직장인이라면 누구나 한 번쯤 해봤을 겁니다. 수백 개 행을 옮기고, 서식을 맞추고, 행과 열을 바꾸는 작업을 손으로 하다 보면 퇴근 시간이 다가오기 마련이죠. 이런 반복 작업은 VBA 매크로를 이용하면 코드 10줄 안팎으로 자동화할 수 있습니다. PasteSpecial 옵션만 조절하면 값만 붙여넣기, 서식 유지, 행/열 바꿈까지 상황에 맞게 처리할 수 있고, 반복 횟수와 간격도 입력받아 한 번에 실행할 수 있습니다.

엑셀 VBA 붙여넣기 자동 정리, 어디서 시작해야 할까

매크로를 처음 쓰는 분이라면 Alt + F11을 눌러 VBA 편집기를 여는 것부터 시작합니다. 삽입 메뉴에서 모듈을 추가한 뒤 코드를 붙여넣고 실행 버튼을 누르면 됩니다. 이후 엑셀 시트에서 Alt + F8을 누르면 매크로 목록이 나타나 실행할 수 있습니다.

VBA로 붙여넣기를 자동화할 때 가장 많이 사용하는 메서드가 Range.PasteSpecial입니다. 이 메서드의 인자 값을 바꾸면 붙여넣을 내용을 정확하게 지정할 수 있습니다. 예를 들어 값만 붙여넣고 싶다면 xlPasteValues를, 서식까지 유지하려면 xlPasteAll을 사용합니다. 열 너비만 가져올 때는 xlPasteColumnWidths, 수식만 복사하려면 xlPasteFormulas를 쓰면 됩니다.

값만 붙여넣기 매크로, 가장 기본이 되는 코드

가장 기본적인 값만 붙여넣는 코드는 아래와 같습니다. 표 양식이 이미 만들어져 있고 데이터만 갱신해야 하는 상황에서 유용합니다.

Sub PasteValuesOnly()
    Selection.Copy
    Range("B2").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

이 코드에서 Application.CutCopyMode = False는 매크로 실행 후 클립보드를 비워 점선 테두리가 남지 않게 하는 역할을 합니다. 이 한 줄을 빠뜨리면 복사 상태가 계속 유지되니 주의해야 합니다. 반면 테두리나 배경색 같은 서식까지 유지하려면 xlPasteAll을 쓰면 됩니다.

같은 데이터를 여러 번 붙여넣기, 횟수와 간격을 직접 입력받는 방법

같은 데이터 블록을 여러 위치에 일정한 간격으로 붙여넣어야 하는 경우가 있습니다. 예를 들어 3행짜리 데이터를 18행 간격으로 12번 반복해서 배치해야 하는 식이죠. 이때 For 루프와 InputBox를 조합하면 횟수와 간격을 직접 입력받아 처리할 수 있습니다.

Sub PasteRepeatedly()
    Dim copyRange As Range
    Dim numCopies As Integer
    Dim interval As Integer
    Dim startRow As Integer
    Dim currentRow As Integer
    Dim i As Integer

    On Error Resume Next
    Set copyRange = Application.InputBox("복사할 범위 선택", Type:=8)
    numCopies = InputBox("반복 횟수 입력")
    interval = InputBox("붙여넣기 간격(행 수) 입력")
    startRow = InputBox("첫 번째 붙여넣기 시작 행 입력")
    On Error GoTo 0

    If copyRange Is Nothing Then Exit Sub

    copyRange.Copy
    currentRow = startRow
    For i = 1 To numCopies
        Cells(currentRow, 1).PasteSpecial Paste:=xlPasteValues
        currentRow = currentRow + interval
    Next i
    Application.CutCopyMode = False
    MsgBox "작업이 완료되었습니다!"
End Sub

이 매크로를 실행하면 복사할 범위, 반복 횟수, 간격, 시작 위치를 차례로 입력받습니다. 월별 예측 모델을 만들 때 12개월치 데이터를 같은 간격으로 배치하거나, 여러 부서에서 취합한 데이터를 정해진 위치에 나눠 넣을 때 유용합니다.

세로 데이터를 가로로 눕혀서 붙여넣기, 행/열 바꿈 처리

세로로 정리된 데이터를 가로 방향 보고서 양식에 맞춰야 할 때가 있습니다. 월별 매출이 세로로 입력된 표를 가로로 눕혀서 붙여넣어야 하는 상황이 대표적입니다. 이때 Transpose:=True 옵션을 추가하면 행과 열이 바뀐 상태로 붙여넣기가 됩니다.

Sub PasteTransposed()
    Selection.Copy
    Range("B2").PasteSpecial Paste:=xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
End Sub

이 방식은 여러 시트에 걸쳐 있는 데이터를 한 시트에 가로 방향으로 취합할 때 특히 편리합니다. 세로로 길게 늘어진 원본 데이터를 그대로 유지하면서, 보고서용 시트에는 가로로 배치하는 식으로 활용할 수 있습니다.

빈 셀 건너뛰고 붙여넣기, 취합 문서에서 특히 유용한 옵션

여러 부서에서 취합한 데이터를 하나의 마스터 시트로 모을 때 문제가 되는 경우가 있습니다. 원본 범위에 빈 셀이 섞여 있으면 붙여넣을 때 목적지에 있던 기존 값을 덮어써버릴 수 있기 때문입니다. SkipBlanks:=True 옵션을 사용하면 빈 셀은 건너뛰고 값이 있는 셀만 붙여넣습니다.

Sub PasteSkipBlanks()
    Selection.Copy
    Range("B2").PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True
    Application.CutCopyMode = False
End Sub

이 방식은 새로 들어온 데이터 중 값이 있는 셀만 갱신하고, 빈 셀은 기존 입력값을 유지하고 싶을 때 사용합니다. 반복 입력되는 취합 문서나 일일 보고서를 관리할 때 유용합니다.

매크로 실행 전 반드시 확인할 보안 설정과 파일 저장 방식

매크로가 포함된 파일을 다른 사람에게 공유할 때는 반드시 .xlsm 확장자로 저장해야 합니다. 일반 .xlsx 파일로 저장하면 매크로 코드가 함께 저장되지 않으니 주의가 필요합니다.

매크로를 처음 실행할 때 보안 경고가 뜨면서 실행이 차단되는 경우가 있습니다. 엑셀 옵션에서 매크로 보안을 '모든 매크로 사용'으로 변경하거나, 신뢰할 수 있는 위치에 파일을 저장해 두면 매번 허용할 필요가 없습니다. 다만 보안 설정을 낮추는 만큼, 출처가 불분명한 파일의 매크로는 실행하지 않는 것이 안전합니다.

코드 상단에 On Error Resume Next 구문을 추가하면 오류가 발생해도 프로그램이 중단되지 않고 다음 줄로 넘어갑니다. 다만 이 경우 오류가 있어도 조용히 지나가므로, 실제로는 On Error GoTo 0으로 오류 감지를 다시 활성화하는 코드를 함께 넣는 것이 좋습니다.

붙여넣기 매크로 실행 시 자주 겪는 문제와 해결 방법

Q. 매크로 실행 후 복사 영역에 점선 테두리가 계속 남아 있어요. Application.CutCopyMode = False 코드를 매크로 마지막에 추가하면 클립보드가 비워지면서 점선 테두리가 사라집니다. 이 코드를 빠뜨리면 복사 상태가 계속 유지됩니다.

Q. 특정 시트에서만 매크로가 실행되게 하고 싶어요. 시트 이름을 코드에 직접 지정하면 됩니다. 예를 들어 Worksheets("매출").Range("A1").Copy처럼 시트 이름과 범위를 함께 입력하면 원하는 시트에서만 작업이 실행됩니다.

Q. 매크로 실행 중 오류가 발생하면 어떻게 하나요? On Error Resume Next 구문을 추가하면 오류가 발생해도 중단되지 않고 다음 줄로 넘어갑니다. 다만 이 경우 오류가 있어도 조용히 지나가므로, On Error GoTo 0으로 오류 감지를 다시 활성화하는 코드를 함께 넣는 것이 좋습니다.

복사-붙여넣기 자동화 매크로는 코드 몇 줄만 익혀두면 반복 작업에서 큰 시간을 절약할 수 있습니다. 처음엔 옵션 하나하나가 낯설게 느껴지겠지만, 기본 코드 하나를 익힌 뒤 PasteSpecial 옵션만 바꿔가며 응용하면 다양한 상황에 대응할 수 있습니다. 특히 월간 보고서 취합이나 대량 데이터 정리처럼 매일 반복되는 작업이라면, 매크로 하나 만들어 두는 것만으로도 퇴근 시간을 크게 앞당길 수 있습니다.