- 최초 작성일: 1999-10-09
- 최종 수정일: 2026-09-29
- 조회수: 43 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: DM 발송용 주소 인쇄
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
원본 통합 문서는 source 시트의 주소 데이터를 DM 발송용 주소 형식으로 재배치하는 예제로 구성되어 있습니다.
주소를 한 건씩 다시 입력하지 않고 VBA로 우편번호, 주소, 회사명, 수신자를 조합해 두 열의 주소 라벨 형태로 만드는 구조를 살펴봅니다.
DM 발송용 주소 인쇄
핵심 요약
- source 시트의 성명, 회사명, 우편번호, 주소 데이터를 순서대로 읽어옵니다.
- VBA에서 줄바꿈 문자를 조합해 우편번호·주소·회사명·수신자 형식의 라벨 문자열을 만듭니다.
- 짝수와 홀수 레코드를 A열과 B열에 번갈아 배치해 DM 발송용 주소록을 생성합니다.
원본 주소 데이터
| 성명 | 회사명 | 우편번호 | 주소 | 비고 |
| 홍길동 | ㈜대서양 | 202-502 | 서울시 영등포구 신길동 22 | |
| 김유신 | 동아생명 | 121-110 | 서울시 종로구 석수동1-16 | |
| 김만원 | 대한생명 | 120-515 | 서울시 마포구 공덕동 15-1 | |
| 안경석 | 삼보컴퓨터 | 202-554 | 서울시 중구 태평동1가 광희빌딩1317 | |
| 이재민 | 진코퍼레이션 | 140-013 | 서울시 용산구 한강로 3가 63번지 | |
| 나윤미 | ㈜태평양 | 202-556 | 서울시 중구 태평로 6가 66 | |
| 전윤길 | ㈜대서양 | 202-556 | 서울시 영등포구 신길3동 123 | |
| 민음사 | 인도양㈜ | 202-556 | 서울시 중구 태평로 1가 61 | |
| 신영복 | 중앙일보 | 202-556 | 서울시 중구 태평로 1가 61 | |
| 박병진 | 대구매일신문 | 202-556 | 서울시 중구 태평로 1가 61 | |
| 신동우 | 일간스포츠 | 202-556 | 서울시 중구 태평로 1가 61 | |
| 이규보 | 웅진코웨이 | 202-559 | 서울시 중구 신화동 2 | |
| 이규태 | 삼부토건 | 121-020 | 서울시 마포구 공덕동 1125 | |
| 이규진 | 녹색시민연합 | 110-592 | 서울시 종로구 중곡동 147 | |
| 김담당 | ㈜대서양 | 110-592 | 서울시 종로구 중곡동 148 | |
| 이담당 | 동아생명 | 110-592 | 서울시 종로구 중곡동 149 | |
| 권담당 | 대한생명 | 202-551 | 서울시 중구 회현동 1230번지 | |
| 조담당 | 삼보컴퓨터 | 202-528 | 서울시 중구 충정로 6가 | |
| 장백산 | 진코퍼레이션 | 202-591 | 서울시 중구 죽립동 25번지 | |
| 조정리 | ㈜태평양 | 202-151 | 서울시 중구 충정로 3가 608-3 | |
| 박경래 | ㈜대서양 | 150-590 | 서울시 영등포구 여의도동 1번지 | |
| 홍경래 | 인도양㈜ | 150-528 | 서울시 영등포구 여의도동 2번지 | |
| 안국신 | 중앙일보 | 150-010 | 서울시 영등포구 여의도동 10-5 | |
| 이효수 | 대구매일신문 | 202-545 | 서울시 중구 청파동 25 | |
| 박세일 | ㈜대서양 | 140-132 | 서울시 용산구 이촌동2가103-7 | |
| 함석훈 | 동아생명 | 140-132 | 서울시 용산구 청파동2가 100-1 | |
| 김공삼 | 대한생명 | 140-013 | 서울시 용산구 한강로1가 182번지 | |
| 김대종 | 삼보컴퓨터 | 156-160 | 서울시 동작구 신대방동 680번지 | |
| 나희선 | 진코퍼레이션 | 150-046 | 서울시 영등포구 당산동 6가 25번지 | |
| 김원미 | ㈜태평양 | 110-140 | 서울시 종로구 수색동 81-25 | |
| 이선형 | ㈜대서양 | 202-551 | 서울시 중구 회현동 6가 121-2 | |
| 진준기 | 인도양㈜ | 202-545 | 서울시 용산구 한강로 1가 100번지 | |
| 민준호 | 중앙일보 | 110-592 | 서울시 종로구 청학동 147번지 | |
| 박종수 | 대구매일신문 | 501-558 | 대구시 중구 계산동 1209번지 | |
| 김종태 | 일간스포츠 | 135-260 | 서울시 강남구 논현동 쌍문빌딩 1000 |
주소 라벨 만들기 VBA
Option Explicit
Sub MakeLable()
Dim rngStart As Range
Dim strString As String
Dim intNum As Integer
Dim intNum1 As Integer
Dim shtTarget As Worksheet
Set rngStart = Sheets("source").Range("a2")
For Each shtTarget In Worksheets
If shtTarget.Name = "주소록" Then
Application.DisplayAlerts = False
MsgBox "같은 시트가 이미 있으므로 지우겠습니다...", , "DM발송용 주소인쇄//LPRINCE"
shtTarget.Delete
End If
Next shtTarget
Worksheets.Add.Name = "주소록"
ActiveSheet.Columns.ColumnWidth = Range("a1").ColumnWidth * 4
Do While rngStart.Offset(intNum, 0) <> ""
If intNum Mod 2 = 0 Then
intNum1 = 0
Else
intNum1 = 1
End If
'// 짝수 레코드는 A열에, 홀수 레코드는 B열에 인쇄
strString = rngStart.Offset(intNum, 2) & Chr(10) & _
rngStart.Offset(intNum, 3) & Chr(10) & _
rngStart.Offset(intNum, 1) & Chr(10) & _
rngStart.Offset(intNum, 0) & " 귀하"
Range("a1").Offset(Int(intNum / 2), intNum1) = strString
intNum = intNum + 1
Loop
MsgBox "출력작업이 잘 끝났습니다..." & Chr(10) & _
"총 " & intNum & "명이 등록되어 있습니다", , _
"작업 종료//By LPRINCE"
Application.Goto Sheets("source").Range("a1"), True
End Sub
Sub RecShow()
Static blnShow As Boolean
If blnShow Then
ActiveSheet.DrawingObjects("MyRectangle").Width = 350
Else
ActiveSheet.DrawingObjects("myrectangle").Width = 0
End If
blnShow = Not blnShow
End Sub
참고: 위 코드의 RecShow 프로시저는 원문 워크시트의 도형(MyRectangle)의 너비를 바꿔 보이거나 숨기는 보조 매크로로, 주소 라벨을 만드는 MakeLable 프로시저와는 관계가 없습니다.
생성된 주소 라벨
| 202-502 서울시 영등포구 신길동 22 ㈜대서양 홍길동 귀하 |
121-110 서울시 종로구 석수동1-16 동아생명 김유신 귀하 |
| 120-515 서울시 마포구 공덕동 15-1 대한생명 김만원 귀하 |
202-554 서울시 중구 태평동1가 광희빌딩1317 삼보컴퓨터 안경석 귀하 |
| 140-013 서울시 용산구 한강로 3가 63번지 진코퍼레이션 이재민 귀하 |
202-556 서울시 중구 태평로 6가 66 ㈜태평양 나윤미 귀하 |
| 202-556 서울시 영등포구 신길3동 123 ㈜대서양 전윤길 귀하 |
202-556 서울시 중구 태평로 1가 61 인도양㈜ 민음사 귀하 |
| 202-556 서울시 중구 태평로 1가 61 중앙일보 신영복 귀하 |
202-556 서울시 중구 태평로 1가 61 대구매일신문 박병진 귀하 |
| 202-556 서울시 중구 태평로 1가 61 일간스포츠 신동우 귀하 |
202-559 서울시 중구 신화동 2 웅진코웨이 이규보 귀하 |
| 121-020 서울시 마포구 공덕동 1125 삼부토건 이규태 귀하 |
110-592 서울시 종로구 중곡동 147 녹색시민연합 이규진 귀하 |
| 110-592 서울시 종로구 중곡동 148 ㈜대서양 김담당 귀하 |
110-592 서울시 종로구 중곡동 149 동아생명 이담당 귀하 |
| 202-551 서울시 중구 회현동 1230번지 대한생명 권담당 귀하 |
202-528 서울시 중구 충정로 6가 삼보컴퓨터 조담당 귀하 |
| 202-591 서울시 중구 죽립동 25번지 진코퍼레이션 장백산 귀하 |
202-151 서울시 중구 충정로 3가 608-3 ㈜태평양 조정리 귀하 |
| 150-590 서울시 영등포구 여의도동 1번지 ㈜대서양 박경래 귀하 |
150-528 서울시 영등포구 여의도동 2번지 인도양㈜ 홍경래 귀하 |
| 150-010 서울시 영등포구 여의도동 10-5 중앙일보 안국신 귀하 |
202-545 서울시 중구 청파동 25 대구매일신문 이효수 귀하 |
| 140-132 서울시 용산구 이촌동2가103-7 ㈜대서양 박세일 귀하 |
140-132 서울시 용산구 청파동2가 100-1 동아생명 함석훈 귀하 |
| 140-013 서울시 용산구 한강로1가 182번지 대한생명 김공삼 귀하 |
156-160 서울시 동작구 신대방동 680번지 삼보컴퓨터 김대종 귀하 |
| 150-046 서울시 영등포구 당산동 6가 25번지 진코퍼레이션 나희선 귀하 |
110-140 서울시 종로구 수색동 81-25 ㈜태평양 김원미 귀하 |
| 202-551 서울시 중구 회현동 6가 121-2 ㈜대서양 이선형 귀하 |
202-545 서울시 용산구 한강로 1가 100번지 인도양㈜ 진준기 귀하 |
| 110-592 서울시 종로구 청학동 147번지 중앙일보 민준호 귀하 |
501-558 대구시 중구 계산동 1209번지 대구매일신문 박종수 귀하 |
| 135-260 서울시 강남구 논현동 쌍문빌딩 1000 일간스포츠 김종태 귀하 |
정리 — DM 발송용 주소 인쇄
| 구분 | 내용 |
|---|---|
| 주제 | 주소 원본 데이터를 DM 발송용 주소 라벨로 재배치하는 VBA |
| 원본 | source 시트의 성명, 회사명, 우편번호, 주소 |
| 라벨 형식 | 우편번호, 주소, 회사명, 수신자 귀하를 줄바꿈으로 조합 |
| 배치 | 레코드를 A열과 B열에 번갈아 배치해 한 행에 두 명의 주소를 나란히 표시 |
| 주요 매크로 | MakeLable (주소록 시트를 새로 만들어 라벨 생성) |
자주 묻는 질문 (FAQ)
Q1. 주소 라벨은 어떤 순서로 만들어지나요?
source 시트의 데이터를 위에서부터 차례로 읽어 우편번호, 주소, 회사명, 성명 귀하 순서로 줄바꿈 문자를 넣어 한 셀에 조합합니다.
Q2. 라벨은 어떻게 배치되나요?
첫 번째 레코드는 A열에, 두 번째 레코드는 B열에 번갈아 배치해 한 행에 두 명의 주소가 나란히 놓입니다.
Q3. 같은 이름의 주소록 시트가 이미 있으면 어떻게 되나요?
매크로가 같은 시트가 이미 있다는 메시지를 보여 준 뒤 기존 시트를 삭제하고 새로 만듭니다.
마치며
우편물 발송 작업이 잦다면 주소 라벨 생성 매크로로 반복 입력을 줄여 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.