• 최초 작성일: 2007-12-04
  • 최종 수정일: 2026-09-30
  • 조회수: 13 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 뭐? 엑셀이 말을 한다고??

들어가기 전에

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

엑셀의 애플리케이션(Application) 오브젝트 밑에 있는 Speech 속성을 이용하면 엑셀이 말을 하도록 할 수 있습니다. 아래 버튼을 눌러 보세요.

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

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

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


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

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

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

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

뭐? 엑셀이 말을 한다고??

핵심 요약: Speak 메서드로 엑셀이 결과를 말하게 하기

Application 개체의 Speech.Speak 메서드에 문자열을 전달하면 엑셀이 그 문장을 음성으로 읽어 줍니다. 프로시저는 물론 사용자 정의 함수에서도 사용할 수 있습니다.

  • 1단계: Application.Speech.Speak i로 10부터 1까지 카운트다운을 말하게 합니다.
  • 2단계: 이름 정의된 영역의 합계와 평균을 문장으로 만들어 셀에 표시하고 음성으로도 읽습니다.
  • 3단계: TellMe 사용자 정의 함수를 만들어 IF 수식 결과를 말하게 합니다.

Step 1: 엑셀이 카운트다운을 말하게 하기

아리땁거나 감미로운 것과는 거리가 멀지만, 그래도 엑셀의 목소리(?)를 들으셨지요?

Sub SayCountdown()

    Dim i As Integer
    On Error GoTo ET

    For i = 10 To 1 Step -1
        Application.Speech.Speak i
        'Speech.Speak 메서드를 이용하여 인수(i)로 전달된 문자열을 재생합니다.
        '단, 한글은 지원하지 않습니다.
        '다음 문장을 VB Editor의 직접 실행 창에 붙여넣고 Enter 키를 눌러 보시기 바랍니다.
        'Application.Speech.Speak "Hi, Excel 2007"

    Next i

ET:
'오류가 발생하였을 경우, 오류와 관련된 정보를 메시지 상자를 통해 보여줍니다.

    If Err <> 0 Then
        MsgBox Err.Description, , "에러코드 : " & Err.Number
    End If

End Sub

참고: 코드 주석에 소개된 것처럼 Speak 메서드는 한글을 지원하지 않습니다. 영어 문장으로 시험해 보세요. 또한 소리가 나오려면 컴퓨터에 음성 합성 기능이 설치되어 있고 스피커가 켜져 있어야 합니다.

Step 2: 합계와 평균을 말하게 하기

이번에는 특정 영역의 합계와 평균값이 얼마인지 말하도록 해 볼까요? 아래 버튼을 클릭하면, 음성과 셀을 통해 계산 결과를 알 수 있습니다.

Sub SayCalcResult()

    Dim lngSum As Long
    Dim lngAverage As Long
    Dim strSpeech As String

    '워크시트 함수인 Sum과 Average를 이용하여 'MyRange' 영역의 합계와 평균을 구합니다.
    lngSum = Application.WorksheetFunction.Sum(Range("MyRange"))
    lngAverage = Application.WorksheetFunction.Average(Range("MyRange"))

    strSpeech = strSpeech & "The sum of the values " & lngSum & " and "
    strSpeech = strSpeech & "The average values " & lngAverage
    'Speak 메서드의 인수로 전달해 줄 문자열을 만듭니다.

    Range("Result") = strSpeech
    Application.Speech.Speak strSpeech

End Sub

원문 오류 수정: 음성으로 읽어 줄 문장에 'avarage'로 적혀 있던 철자를 'average'로 바로잡았습니다. 참고로 평균값을 담는 lngAverage는 Long 변수라서 소수점 이하가 반올림된 정수로 읽힙니다. 소수점까지 읽게 하려면 Double 변수로 바꿔 주세요. 또 예제 파일의 판매수량은 =INT(RAND()*100) 수식으로 만들어져 있어 계산할 때마다 값이 달라집니다.

Step 3: 사용자 정의 함수에서 말하게 하기

간단하지요? 이번에는 사용자 정의 함수에 이것을 이용하는 예제를 하나 살펴보겠습니다.

영업담당목표금액판매금액달성률
김태희778721132.5%
전지현81157470.8%
조인성304537176.6%
장동건290619213.4%
김종래714744104.2%
최재천50025450.8%
황정민39020953.6%
지점합계30863809123.4%

위와 같은 '영업사원별 판매실적 집계표'가 있다고 가정합니다. 지점 전체의 판매달성률이 95%를 넘었느냐 여부에 따라 메시지를 다르게 하여 셀에 표시하고 또 엑셀이 말하도록 해 볼까요?

먼저, 다음과 같은 초간단 사용자 정의 함수를 하나 만듭니다.

Function TellMe(strXXX)
    Application.Speech.Speak strXXX
    TellMe = strXXX
End Function

이제 임의의 셀(예를 들면 E78 셀)에, 다음과 같은 수식을 입력하고 엔터키를 눌러보세요.

=IF(D78>=0.95,TellMe("You did a good job!"),TellMe("Just so-so"))

원문 오류 수정: 원문의 수식은 D77(황정민 사원의 달성률)을 참조하고 있었습니다. '지점 전체의 판매달성률'을 판단하려면 지점합계 행의 달성률인 D78을 참조해야 하므로 바로잡았습니다. 위 표에서 지점 전체 달성률은 123.4%로 95%를 넘으므로 "You did a good job!"가 표시되고 음성으로도 읽어 줍니다.

많이 응용해 보시기 바랍니다.

다음 시간에…

정리 — 엑셀이 말하게 하는 방법

구분 사용한 코드 역할
음성 재생 Application.Speech.Speak 문자열 전달한 문자열을 음성으로 재생 (한글 미지원)
카운트다운 For i = 10 To 1 Step -1 10부터 1까지 거꾸로 순환하며 숫자를 말함
합계/평균 WorksheetFunction.Sum / Average 이름 정의된 영역의 계산 결과를 구해 문장으로 만듦
사용자 정의 함수 Function TellMe(strXXX) 문자열을 말하고 그 문자열을 셀에도 반환
조건별 멘트 =IF(D78>=0.95, TellMe(...), TellMe(...)) 달성률에 따라 다른 문장을 말하고 표시

자주 묻는 질문 (FAQ)

Q1. 한글로 말하게 할 수는 없나요?

이 강좌의 코드 주석에서 안내하듯 Speak 메서드는 한글을 지원하지 않습니다. 한글 문장을 전달하면 원하는 소리가 나오지 않으니 영어 문장을 사용해 주세요.

Q2. 소리가 나지 않습니다.

컴퓨터에 음성 합성 기능이 설치되어 있는지, 스피커 음량이 켜져 있는지 먼저 확인하세요. 코드에 오류가 있다면 오류 처리 구문에서 메시지 상자로 내용이 표시됩니다.

Q3. 워크시트 수식에서 TellMe 함수를 쓸 때 주의할 점이 있나요?

수식이 다시 계산될 때마다 함수가 실행되어 음성이 재생됩니다. 값을 바꾸거나 F9 키를 누를 때마다 소리가 나므로 업무용 문서에서는 신중하게 사용하세요.

마치며

Speak 메서드 하나면 엑셀도 말을 합니다. 재미삼아 시작해도 좋고, 계산 결과를 귀로 확인하는 용도로 응용해도 좋으니 여러분만의 아이디어를 더해 보세요!