• 최초 작성일: 2009-05-28
  • 최종 수정일: 2026-09-30
  • 조회수: 17 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA로 카메라 기능 구현하기

들어가기 전에

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

너무 많은 사람들에게 신세를 졌다.
나로 말미암아 여러 사람이 받은 고통이 너무 크다.
앞으로 받을 고통도 헤아릴 수가 없다.
여생도 남에게 짐이 될 일 밖에 없다.
건강이 좋지 않아서 아무 것도 할 수가 없다.
책을 읽을 수도 글을 쓸 수도 없다.

너무 슬퍼하지 마라.
삶과 죽음이 모두 자연의 한 조각 아니겠는가?
미안해하지 말라.
누구도 원망하지 마라.
운명이다.

화장해라.
그리고 집 가까운 곳에 아주 작은 비석 하나만 남겨라.
오래된 생각이다.

참담함
당혹감
비통함
이 땅에 두번 다시 이런 일이 없도록…
화해와 통합의 계기…

이런 류의 상투적이고 진부한 문구를 되뇌이고 싶지는 않습니다. '잃어버린 10년'이 맞는지, '1년 만에 30년 전의 수준으로 퇴보'해 버린 것인지 시비를 가리고 싶은 생각 역시 없습니다.

노무현 前 대통령의 서거를 진심으로 애도합니다…

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

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

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


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

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

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

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

VBA로 카메라 기능 구현하기

핵심 요약: 카메라 기능을 VBA로 구현하고 시트 방향도 바꿔 보기

선택한 영역을 사용자가 고른 방식에 따라 연결된 그림 또는 값 그림으로 붙여넣는 코드를 만들고, 덤으로 시트 방향을 오른쪽에서 왼쪽으로 바꾸는 속성도 살펴봅니다.

  • 1단계: Application.InputBox(Type:=8)로 복사할 영역을 선택받습니다.
  • 2단계: MsgBox의 예/아니오 선택에 따라 Pictures.Paste(link:=True) 또는 CopyPicture를 실행합니다.
  • 3단계: DisplayRightToLeft 속성으로 시트 방향을 바꿔 봅니다.

Step 1: VBA로 카메라 기능 흉내내기

그 언젠가… 엑셀 2007에서 카메라 기능을 사용하는 방법에 대해 소개해 드린 적이 있습니다(찾아보니 X0444 강좌로군요).

본 강좌는 VBA 강좌인 만큼 그 이름에 걸맞게… VBA를 이용하여 카메라 기능을 구현해 보도록 하죠. 아래 버튼을 클릭하신 다음, 범위를 지정해 보세요.

멀 하려는 것인지 이해하시겠지요? 사용된 코드는 매우 간단합니다.

Sub MimicCamera()

    Dim rngTarget As Range
    Dim strMsg As String
    Dim intAnswer As Integer

    Set rngTarget = Application.InputBox(prompt:="복사할 영역을 선택하세요!", _
        Type:=8, Default:=Selection.Address)
    strMsg = "연결하여 붙여 넣을까요?" & vbCr & vbCr _
       & "예(Y): 연결하여 붙여넣기" & vbCr _
       & "아니오(N): 값 붙여넣기"
    intAnswer = MsgBox(strMsg, vbYesNoCancel)

    '"예/아니오" 버튼 중 어느 것을 선택하였느냐에 따라 그림으로 붙여넣을 것인지 아니면 연결하여
    '붙여넣을 지를 구분합니다.
    If intAnswer = vbYes Then
        rngTarget.Copy
        ActiveSheet.Pictures.Paste(link:=True).Select
    ElseIf intAnswer = vbNo Then
        rngTarget.CopyPicture Appearance:=xlScreen, Format:=xlPicture
        ActiveSheet.Paste
    Else
        Exit Sub
    End If

    Application.CutCopyMode = False

End Sub

참고 - 카메라 기능이란? 카메라 기능은 워크시트의 특정 영역을 '연결된 그림'으로 붙여 넣는 기능입니다. 원본 셀의 값이 바뀌면 그림의 내용도 함께 바뀌죠. 위 코드에서 '예'를 선택했을 때 실행되는 Pictures.Paste(link:=True)가 바로 이 역할을 하며, '아니오'를 선택하면 CopyPicture 메서드로 값이 고정된 일반 그림을 붙여 넣습니다.

참고 - 취소 버튼 처리: 영역 선택 창에서 [취소]를 누르면 오류가 발생하므로, 실제 업무용으로 사용할 때는 코드 첫머리에 On Error Resume Next 등을 넣어 처리해 주세요.

코드는 더 이상 설명하고 말고 할 것도 없으므로 이것으로 이번 강좌 마칩니다… 라고 하면 좀 성의가 많이 부족해 보이므로... 재미난 것 한 가지 더 보도록 하죠.

Step 2: 덤으로 하나 더 - 시트 방향을 오른쪽에서 왼쪽으로 바꾸기

엑셀 2003 버전에서는 워크시트의 내용을 오른쪽에서 왼쪽으로 표시되도록 하는 기능이 있었습니다. 저는 개인적으로 화면을 이렇게 하고 사용해 본 적은 없습니다만, 왼손잡이를 위한 기능인가 싶기도 합니다.

먼 소리냐 하면… 아래 버튼을 눌러 보세요.

    ActiveSheet.DisplayRightToLeft = True

DisplayRightToLeft 속성 값을 True로 지정하면 오른쪽에서 왼쪽으로 표시됩니다. 기본 값은 False입니다. 만약 토글(Toggle) 형태로 만들려면 이렇게 하면 되겠지요.

    ActiveSheet.DisplayRightToLeft = Not ActiveSheet.DisplayRightToLeft

엑셀 2007 이전 버전에서는 '도구-옵션' 메뉴의 '국가별 설정' 탭에서 '기본 방향-오른쪽에서 왼쪽' 혹은 '왼쪽에서 오른쪽' 항목을 이용하여 설정값을 변경할 수 있습니다.

엑셀 2003 옵션 대화상자의 국가별 설정 탭 - 기본 방향(오른쪽에서 왼쪽 / 왼쪽에서 오른쪽)
아이엑셀러

참고: 최근 버전에서는 [페이지 레이아웃] 탭의 [시트 오른쪽에서 왼쪽으로] 명령으로도 방향을 바꿀 수 있지만, 이 명령은 환경에 따라 표시되지 않을 수 있습니다. 그럴 때는 위의 DisplayRightToLeft 속성이 편리합니다.

오늘은 여기까지…

정리 — 카메라 기능 구현 핵심

구분 사용한 코드 역할
영역 선택 Application.InputBox(..., Type:=8) 사용자가 선택한 셀 범위를 Range 개체로 반환
붙여넣기 방식 선택 MsgBox(strMsg, vbYesNoCancel) 예: 연결하여 붙여넣기 / 아니오: 값 붙여넣기
연결된 그림 rngTarget.Copy + Pictures.Paste(link:=True) 원본이 바뀌면 그림도 함께 바뀌는 카메라 기능
일반 그림 CopyPicture Appearance:=xlScreen, Format:=xlPicture 현재 화면 모양 그대로 고정된 그림으로 붙여넣기
시트 방향 ActiveSheet.DisplayRightToLeft True면 오른쪽에서 왼쪽으로 표시, 기본값은 False

자주 묻는 질문 (FAQ)

Q1. 카메라 기능을 엑셀에서 바로 쓰려면 어떻게 하나요?

카메라 명령은 기본 리본에 표시되지 않으므로 빠른 실행 도구 모음에 추가해서 사용합니다. 자세한 방법은 엑셀 2007의 카메라 기능을 소개한 X0444 강좌를 참고하세요.

Q2. 연결하여 붙여넣은 그림과 값 붙여넣기 그림은 무엇이 다른가요?

연결하여 붙여넣은 그림은 원본 셀의 값이나 서식이 바뀌면 그림도 함께 바뀝니다. CopyPicture로 붙여넣은 그림은 그 순간의 모습이 고정된 일반 그림이라 원본이 바뀌어도 그대로입니다.

Q3. 시트를 오른쪽에서 왼쪽으로 표시하면 데이터도 바뀌나요?

아닙니다. DisplayRightToLeft 속성은 화면에 표시되는 방향만 바꿀 뿐 셀의 데이터나 수식에는 영향을 주지 않습니다. 다시 False로 지정하면 원래대로 돌아옵니다.

마치며

카메라 기능은 VBA로 흉내내 보면 연결하여 붙여넣기의 원리까지 함께 이해할 수 있습니다. 덤으로 알아본 DisplayRightToLeft 속성도 재미삼아 한번 써 보세요!