엑셀 VBA에서 Copy 메서드는 셀, 범위, 행, 열, 시트 및 워크북 등의 데이터를 복사하여 붙여넣기할 때 사용됩니다.
복사한 데이터는 클립보드에 저장되며, Destination을 지정하면 직접 붙여넣을 수도 있습니다.
1. 기본 문법
Range("A1").Copy Destination:=Range("B1") ' A1을 B1로 복사
|
📌 Copy 메서드만 사용하면 클립보드에 복사됨
📌 Destination을 지정하면 즉시 해당 위치에 붙여넣기 가능
2. 셀 및 범위 복사
📌 특정 셀 복사
Range("A1").Copy Destination:=Range("B1") ' A1을 B1로 복사
|
📌 여러 개의 셀 복사
Sub 범위_복사()
Range("A1:A5").Copy Destination:=Range("C1:C5") ' A1:A5 → C1:C5 복사
End Sub
|
📌 한 번에 복사 후 붙여넣기
Sub 복사_후_붙여넣기()
Range("A1:A5").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues ' 값만 붙여넣기
Application.CutCopyMode = False ' 점선 테두리 제거
End Sub
|
📌 .PasteSpecial Paste:=xlPasteValues → 값만 붙여넣기
📌 Application.CutCopyMode = False → 복사 점선 테두리 제거
3. 특정 속성만 복사 (PasteSpecial)
📌 값만 복사
Sub 값만_복사()
Range("A1:A5").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
|
📌 서식만 복사
Sub 서식만_복사()
Range("A1:A5").Copy
Range("C1").PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End Sub
|
📌 .PasteSpecial Paste:=xlPasteFormats → 서식만 붙여넣기
📌 수식만 복사
Sub 수식만_복사()
Range("A1:A5").Copy
Range("C1").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
End Sub
|
📌 .PasteSpecial Paste:=xlPasteFormulas → 수식만 붙여넣기
📌 열 너비 포함하여 복사
Sub 열너비_복사()
Range("A1:A5").Copy
Range("C1").PasteSpecial Paste:=xlPasteColumnWidths
Application.CutCopyMode = False
End Sub
|
📌 .PasteSpecial Paste:=xlPasteColumnWidths → 열 너비 유지하여 복사
4. 행과 열 복사
📌 행 복사
Sub 행_복사()
Rows(1).Copy Destination:=Rows(3) ' 1행 → 3행 복사
End Sub
|
📌 열 복사
Sub 열_복사()
Columns("A").Copy Destination:=Columns("C") ' A열 → C열 복사
End Sub
|
5. 워크시트 복사
📌 시트 복사
Sub 시트_복사()
Sheets("Sheet1").Copy After:=Sheets("Sheet2") ' Sheet1을 Sheet2 뒤에 복사
End Sub
|
📌 After → 지정한 시트 뒤에 복사
📌 Before → 지정한 시트 앞에 복사
6. 워크북 복사
📌 파일 간 시트 복사
Sub 워크북_사이_시트_복사()
Workbooks("원본.xlsx").Sheets("Sheet1").Copy _
Before:=Workbooks("대상.xlsx").Sheets(1)
End Sub
|
📌 다른 엑셀 파일로 시트 복사 가능
📌 Before → 첫 번째 시트 앞에 붙여넣기
📌 After → 마지막 시트 뒤에 붙여넣기
7. 특정 데이터 조건으로 복사
📌 특정 값이 있는 셀만 복사
Sub 특정값_있는셀_복사()
Dim rng As Range, cell As Range, target As Range
Set rng = Range("A1:A10")
Set target = Range("C1") ' 복사할 위치
For Each cell In rng
If cell.Value <> "" Then
cell.Copy Destination:=target
Set target = target.Offset(1, 0) ' 다음 행으로 이동
End If
Next cell
End Sub
|
📌 빈 값이 아닌 셀만 복사하여 C열에 붙여넣기
8. 사용된 범위 복사
Sub 사용된범위_복사()
ActiveSheet.UsedRange.Copy Destination:=Sheets("Sheet2").Range("A1")
End Sub
|
📌 현재 시트의 사용된 범위를 전체 복사하여 Sheet2에 붙여넣기
9. 자동 필터를 적용한 값만 복사
Sub 필터된_값_복사()
Dim rng As Range
Dim target As Range
' A1:A100 범위에서 필터 적용된 데이터 복사
Set rng = Range("A1:A100").SpecialCells(xlCellTypeVisible)
Set target = Sheets("Sheet2").Range("A1")
rng.Copy Destination:=target
End Sub
|
📌 필터된 데이터만 선택하여 복사 (SpecialCells(xlCellTypeVisible))
10. 클립보드에서 복사한 데이터 붙여넣기
Sub 클립보드_붙여넣기()
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
|
📌 ActiveSheet.Paste를 사용하여 클립보드 데이터 붙여넣기
📝 정리
기능
|
VBA 코드
|
셀 복사
|
Range("A1").Copy Destination:=Range("B1")
|
범위 복사
|
Range("A1:A5").Copy Destination:=Range("C1:C5")
|
값만 붙여넣기
|
.PasteSpecial Paste:=xlPasteValues
|
서식만 붙여넣기
|
.PasteSpecial Paste:=xlPasteFormats
|
수식만 붙여넣기
|
.PasteSpecial Paste:=xlPasteFormulas
|
열 너비 포함 복사
|
.PasteSpecial Paste:=xlPasteColumnWidths
|
행 복사
|
Rows(1).Copy Destination:=Rows(3)
|
열 복사
|
Columns("A").Copy Destination:=Columns("C")
|
시트 복사
|
Sheets("Sheet1").Copy After:=Sheets("Sheet2")
|
워크북 복사
|
Workbooks("원본.xlsx").Sheets("Sheet1").Copy Before:=Workbooks("대상.xlsx").Sheets(1)
|
특정 값이 있는 셀만 복사
|
If cell.Value <> "" Then cell.Copy
|
사용된 범위 복사
|
ActiveSheet.UsedRange.Copy Destination:=Sheets("Sheet2").Range("A1")
|
필터된 값 복사
|
Range("A1:A100").SpecialCells(xlCellTypeVisible).Copy
|
🔥 VBA의 Copy를 활용하면 데이터 복사 및 자동화 작업을 쉽게 수행할 수 있습니다! 🚀