반복 업무 중 자주 사용하는 기능 중 하나는
✅ 다른 엑셀 파일을 열고
✅ 특정 범위만 복사해서
✅ 현재 시트로 자동 붙여넣는 작업입니다.
예를 들어,
• 매출자료.xlsx 파일에서 A1:F10만 복사해서 내 보고서 시트에 붙여넣기
• 버튼 한 번으로 외부 자료 연동 자동화
오늘은 VBA로 버튼 클릭 시 외부 파일 열기 + 특정 범위 복사 + 자동 붙여넣기를 완성하는 실전 예제를 알려드릴게요.
⸻
✅ 1. VBA 코드: 외부 파일 열고 복사하여 붙여넣기
Sub ImportDataFromExternalFile()
Dim sourceWb As Workbook
Dim sourceWs As Worksheet
Dim targetWs As Worksheet
Dim sourcePath As String
' 외부 파일 경로 (반드시 전체 경로로!)
sourcePath = "C:\Users\사용자\Documents\매출자료.xlsx"
' 현재 워크북의 붙여넣을 시트
Set targetWs = ThisWorkbook.Sheets("보고서") ' 내 시트 이름
' 외부 파일 열기
Application.ScreenUpdating = False
Set sourceWb = Workbooks.Open(sourcePath)
Set sourceWs = sourceWb.Sheets("Sheet1") ' 복사할 시트 이름
' 원하는 범위 복사
sourceWs.Range("A1:F10").Copy
' 붙여넣기 위치 (예: A1부터)
targetWs.Range("A1").PasteSpecial xlPasteValues
' 외부 파일 닫기 (저장 없이)
sourceWb.Close SaveChanges:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "외부 파일에서 데이터가 복사되었습니다.", vbInformation
End Sub
⸻
✅ 2. 기능 설명
항목 설명
Workbooks.Open 외부 파일 열기
sourceWs.Range(...).Copy 복사할 범위 지정
targetWs.Range(...).PasteSpecial 값 붙여넣기
sourceWb.Close SaveChanges:=False 외부 파일 닫기 (변경 없이)
⸻
✅ 3. 버튼 연결
1. [개발 도구] → [삽입] → 양식 컨트롤 버튼
2. 버튼 생성 후 ImportDataFromExternalFile 매크로 연결
3. 버튼 텍스트: “자료 불러오기”, “매출 가져오기” 등 자유 설정
⸻
✅ 4. 고급 팁: 외부 파일 열지 않고 연결된 시트에서 불러오기 (Query/Table 대신 VBA)
파일이 자주 변경될 경우, 경로를 사용자로부터 선택받는 방식도 가능:
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "가져올 파일 선택"
.Filters.Add "Excel Files", "*.xls*"
If .Show = -1 Then
sourcePath = .SelectedItems(1)
Else
Exit Sub
End If
End With
→ 이 코드를 앞에 붙이면 파일을 매번 직접 선택 가능하게 바꿀 수 있습니다.
⸻
요약 정리
기능 코드 예시 설명
외부 파일 열기 Workbooks.Open 대상 파일 지정
복사할 범위 Range("A1:F10") 자유 설정 가능
현재 시트에 붙여넣기 .PasteSpecial xlPasteValues 값만 복사
파일 자동 닫기 .Close SaveChanges:=False 원본 변경 없음
⸻
이 기능은
📊 매출/실적/재고/외부입력 자동 수집
📥 반복 보고용 템플릿 자동 채우기
📎 연결된 데이터 자동 불러오기
에 매우 유용합니다.
다음 글에서는 **“엑셀에서 버튼 클릭 시 특정 데이터를 구글 스프레드시트에 자동 업로드하는 방법”**을 소개해드릴게요. (Google Sheets API 활용 + 실전 사용 팁 포함)
⸻
카테고리 없음
엑셀에서 버튼 클릭 시 외부 파일을 열고 특정 데이터만 자동 복사해오는 방법 (VBA 활용)
반응형
반응형