• 최초 작성일: 2001-10-05
  • 최종 수정일: 2026-09-30
  • 조회수: 8 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 때로는 형식이 내용을 규정짓기도 합니다

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

이번 시간에는 게시판에 올라온 질문을 살펴봅니다.

먼저 복받으실 겁니다.(좋은일 많이하시니깐요)
엑셀 시트상의 보이는 숫자, 우편번호등을 보이는 그대로 즉,
천단위 컴마가 있는 상태 혹은 우편번호 서식상의 하이픈( - )이 있는 상태로
텍스트로 저장하려 합니다. 간단한것 같은데 영... 어렵네요.
도와주세요.

감사합니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

때로는 형식이 내용을 규정짓기도 합니다

핵심 요약: 서식 그대로 텍스트로 옮기기

셀을 복사해 메모장에 붙여 넣으면 표시 형식이 그대로 유지되며, Shell 함수와 SendKeys 문으로 이 과정을 자동화할 수 있습니다.

  • 1단계: 이름 정의된 범위(Target)를 Copy 합니다.
  • 2단계: Shell 함수로 메모장을 실행합니다.
  • 3단계: SendKeys로 Ctrl+V를 입력해 붙여 넣습니다.

Step 1: 예제 데이터와 질문의 의미

아래와 같은 지역별 매출액 데이터가 있습니다.

예제 데이터 펼쳐 보기 (Branch / Sales / Op. Margin / Net Income)
BranchSalesOp. MarginNet Income
강동12,8952,5792,303
강서22,0634,4134,092
강남30,1506,0305,853
강북30,0856,0175,697
인천28,8466,0005,079
부산40,1248,0257,145
대구36,9247,3857,067
대전20,0004,0003,409
광주19,5803,9163,521
제주10,0002,0001,572

이 데이터의 범위(B19:E29)에는 Target이라는 이름이 정의되어 있습니다.

여기서 Sales, Op.Margin, Net Income 항목에 있는 값들은 통화형 서식을 지정해 준 것입니다. 즉 실제값에 '통화형'이라는 옷을 입혀 준 것이지요. 이 데이터를 서식이 그대로 지정되어 있는 상태에서 텍스트 파일로 저장하고 싶으시다는 질문입니다. 어떻게 하면 될까요?

……………(침묵)…………………..

'복사'를 하신 다음 메모장이나 Notepad 등을 열어서 '붙여넣기'를 하시면 됩니다. 아주 간단하지요?

Step 2: 자동화하기 (CopyToNotepad)

그런데 이것도 귀찮으니까 이것을 자동화시켜 보도록 하겠습니다. 아래의 버튼을 눌러 보세요.

수작업으로 했을 때와 동일한 결과를 가져다 주지요? 코드는 아래와 같이 아주 간단합니다.

Sub CopyToNotepad()
    Dim lngX As Long

    [Target].Copy
    lngX = Shell("Notepad.exe", 1)
    Application.Wait Now + TimeValue("0:00:01")
    '''Shell이라는 못보던 것이 하나 나왔군요.
    '''이것은 실행 프로그램을 수행한 다음, 성공적으로 종료되었을 경우에는 프로그램의
    '''작업 ID를 돌려주는 함수입니다.

Shell이라는 못보던 것이 하나 나왔군요. 이것은 실행 프로그램을 수행한 다음, 성공적으로 종료되었을 경우에는 프로그램의 작업 ID를 돌려주는 함수입니다.

Shell 함수의 형식과 windowstyle 인수값은 다음과 같습니다.

Shell(pathname[,windowstyle])
상수값설명
vbHide0창이 숨겨진 상태이며 숨겨진 창으로 포커스를 전달합니다.
vbNormalFocus1창에 포커스가 있으며 창 원래 상태의 크기와 위치로 복귀합니다.
vbMinimizedFocus2창을 포커스가 있는 아이콘으로 표시합니다.
vbMaximizedFocus3포커스가 있는 창을 전체 화면으로 표시합니다.
vbNormalNoFocus4창이 최근의 창 크기와 위치로 복귀합니다. 현재 활성화된 창은 계속 활성창으로 남아있게 됩니다.
vbMinimizedNoFocus6창을 아이콘으로 표시합니다. 현재 활성화된 창은 계속 활성창으로 남아있게 됩니다
    SendKeys "^v"
    '''SendKeys라는 것도 처음 보시지요? 이것은 키보드에서 입력한 것처럼 실행 창에
    '''키를 입력해 주는 Statement 입니다.
    '''붙여 넣기를 할 때 사용되는 단축키가 Ctrl + V인데 이것을 SendKeys라는 문장을
    '''사용하여 손으로 직접 입력해 준 것과 같은 효과를 얻을 수 있습니다.
    '''이것 이외에도 아래와 같이 여러 가지 키/코드 값이 있으므로 참고하시기 바랍니다.
End Sub

SendKeys라는 것도 처음 보시지요? 이것은 키보드에서 입력한 것처럼 실행 창에 키를 입력해 주는 Statement 입니다. 붙여 넣기를 할 때 사용되는 단축키가 Ctrl + V인데 이것을 SendKeys라는 문장을 사용하여 손으로 직접 입력해 준 것과 같은 효과를 얻을 수 있습니다. 이것 이외에도 아래와 같이 여러 가지 키/코드 값이 있으므로 참고하시기 바랍니다.

SendKeys 키/코드 표 펼쳐 보기
키코드
백스페이스{BACKSPACE}, {BS} 또는 {BKSP}
Break{BREAK}
Caps Lock{CAPSLOCK}
Del 또는 Delete{DELETE} 또는 {DEL}
아래쪽 화살표{DOWN}
End{END}
Enter{ENTER} 또는 ~
Esc{ESC}
Help{HELP}
Home{HOME}
Ins 또는 Insert{INSERT} 또는 {INS}
왼쪽 화살표{LEFT}
Num Lock{NUMLOCK}
Page Down{PGDN}
Page Up{PGUP}
Print Screen{PRTSC}
오른쪽 화살표{RIGHT}
Scroll Lock{SCROLLLOCK}
Tab{TAB}
위쪽 화살표{UP}
F1{F1}
F2{F2}
F3{F3}
F4{F4}
F5{F5}
F6{F6}
F7{F7}
F8{F8}
F9{F9}
F10{F10}
F11{F11}
F12{F12}
F13{F13}
F14{F14}
F15{F15}
F16{F16}
Shift+
Ctrl^
Alt%

마무리

오늘은 여기까지…

정리 — 메모장 붙여넣기 핵심

구분 사용한 코드 역할
복사 [Target].Copy 서식이 적용된 범위 복사
프로그램 실행 Shell("Notepad.exe", 1) 메모장 실행
대기 Application.Wait 메모장이 뜰 때까지 잠시 대기
붙여넣기 SendKeys "^v" Ctrl+V 입력
창 스타일 vbNormalFocus(1) 등 실행 창 상태 지정

자주 묻는 질문 (FAQ)

Q1. 천단위 콤마가 있는 상태 그대로 텍스트로 저장하려면 어떻게 하나요?

범위를 복사한 뒤 메모장에 붙여 넣으면 화면에 보이는 그대로 텍스트로 붙습니다.

Q2. Shell 함수는 무엇을 반환하나요?

실행 프로그램이 성공적으로 시작되면 그 프로그램의 작업 ID를 반환합니다.

Q3. SendKeys로 Ctrl+V는 어떻게 입력하나요?

Ctrl은 ^ 기호로 표시하므로 SendKeys "^v"라고 쓰면 됩니다.

마치며

Shell 함수와 SendKeys 문을 함께 쓰면 외부 프로그램을 실행하고 키 입력까지 자동으로 처리할 수 있습니다.