Range 개체

Copy 메서드

노만e 2025. 3. 12. 06:33

엑셀 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를 활용하면 데이터 복사 및 자동화 작업을 쉽게 수행할 수 있습니다! 🚀