1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

엑셀에서 소리 내기(재생) _ sound play

기타 조회 수 7848 추천 수 0 2010.12.13 02:31:03

질문하기 게시판에 어떤 분이 질문하셨던 내용을 답변으로 작성했던 내용입니다.

 

답변을 얻으신 다음에, 게시물을 삭제해서 팁란에 게시합니다.

 

그러시면 안되죠.. =_=;;

그럼.. 제가 작성한 답변은 뻘짓인가요? =_=;;

 

 

질문의 내용은 아래와 같았습니다.

     1. 엑셀에서 소리내는 방법

     2. 특정 영역에 데이터가 0또는 1로 바뀔때 각각 다른 소리 내는 방법

     3. 수식으로 연결된 셀도 원 데이터가 바뀌여서 연결된 값이 바뀔때도 소리 나게 하는 방법

 

 

답변으로 만든 파일입니다.

다운받기 : 

abyul_playSound_20101118-3.xlsm

abyul_playSound_20101118-3_64bit.xlsm

 

소스는 아래를 참고하세요..

 

[ WorkSheet의 코드]

Private Sub Worksheet_Change(ByVal Target As Range)
    '엑셀 시트에서 "$C$5:$C$9" 범위를 "monitorRange"라는 이름으로 정의해두었습니다.
    With [monitorRange]
        If Target.Column < .Column Or Target.Column > .Column + .Columns.Count - 1 Then Exit Sub
        If Target.Row < .Row Or Target.Row > .Row + .Rows.Count - 1 Then Exit Sub
    End With
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Value = 1 Then Call testSound1
    If Target.Value = 0 Then Call testSound2
End Sub

Private Sub Worksheet_Calculate()
    Call checkChanged
End Sub

Sub checkChanged()
    Dim i As Integer
    For i = 1 To [monitorRange].Cells.Count
        If [monitorRange].Cells(i) <> [bufferRange].Cells(i) Then
            If [monitorRange].Cells(i) = 1 And [bufferRange].Cells(i) = 0 Then
                Call testSound1
            ElseIf [monitorRange].Cells(i) = 0 And [bufferRange].Cells(i) = 1 Then
                Call testSound2
            Else
                Call copyToBuffer
            End If
        End If
    Next i
End Sub

Private Sub Worksheet_Deactivate()
    Call copyToBuffer
End Sub

Sub copyToBuffer()
    [bufferRange].Value = [monitorRange].Value
End Sub

 

 

[ Module 부분의 소스 ]

'http://support.microsoft.com/kb/158140/ko
   Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
       (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
   Const SND_ASYNC = &H1
  
   Sub testSound1()
       If Application.CanPlaySounds Then Call sndPlaySound32("C:\WINDOWS\Media\tada.wav", SND_ASYNC)
   End Sub
   Sub testSound2()
       If Application.CanPlaySounds Then Call sndPlaySound32("C:\WINDOWS\Media\notify.wav", SND_ASYNC)
   End Sub

 

 

참고로.. 소리내는 소스는 아래 코드도 참고해보세요.

 

'======================================================================================
'http://support.microsoft.com/kb/86281/ko

Private Declare Function sndPlaySound Lib "winmm.dll" Alias _
      "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10


Sub testSound1()
   SoundName$ = "C:\WINDOWS\Media\tada.wav"
   wFlags% = SND_ASYNC Or SND_NODEFAULT
   x% = sndPlaySound(SoundName$, wFlags%)
End Sub
               
Sub testSound2()
   SoundName$ = "C:\WINDOWS\Media\notify.wav"
   wFlags% = SND_ASYNC Or SND_NODEFAULT
   x% = sndPlaySound(SoundName$, wFlags%)
End Sub


댓글 '1'

Chris

2015.11.01 02:21:14
*.89.132.243

완젼 좋네요 감사합니다^^

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 34830
65 [10/19일 수정] 엑셀 매크로 수정하기... [2] [레벨:30]a☆ 2003-09-29 8473
64 엑셀에서 서식 지정하기.. 숫자를 한글로 표시하기 등.. [1] [레벨:30]a☆ 2004-09-24 6728
63 셀의 상대 위치 이동&lt; offset(행,열) &gt;과 절대 위치 이동.. [레벨:30]a☆ 2004-10-20 5543
62 엑셀에서 달력 집어 넣기.. [1] [레벨:30]a☆ 2004-10-21 11778
61 엑셀의 유저폼 관련 [1] [레벨:30]a☆ 2004-10-21 10222
60 엑셀에서 vba식으로 영역설정하기.. [2] [레벨:30]a☆ 2004-10-21 6254
59 엑셀에서 에러 처리 [1] [레벨:30]a☆ 2004-10-23 3840
58 엑셀 실행시 자동으로 실행 // 종료시 자동으로 실행 [레벨:30]아별 2004-10-25 5187
57 엑셀 기본작업 매크로.. 선택/입력/복사 등 [레벨:30]a☆ 2004-10-25 3955
56 엑셀.. 잡다구리.. 폼에서 홈페이지 링크 등.. [레벨:30]a☆ 2004-10-25 3495
55 엑셀에서 매크로 실행 동안 화면이 업데이트 되지 않게 하기.. [레벨:30]a☆ 2004-10-26 4008
54 엑셀에서 매개변수의 전달과 외부함수 호출 [레벨:30]a☆ 2004-10-27 6589
53 엑셀에서 날짜 함수 컨트롤 하기 [레벨:30]a☆ 2004-10-29 6418
52 엑셀의 사용자 정의 날짜/시간 형식(Format 함수) [레벨:30]a☆ 2004-11-12 7335
51 엑셀에서 줄바꿈에 대해서.. 줄바꿈하기 제거하기 등등.. [레벨:30]a☆ 2004-11-15 10195
50 엑셀VBA 텍스트 박스에서 여러줄 입력하기 [레벨:30]a☆ 2004-11-15 7585
49 [엑셀VBA] 메시지 박스 활용하기 [레벨:30]아별 2004-12-22 7214
48 [엑셀VBA] 변수의 전달 [레벨:30]a☆ 2005-05-13 4792
47 하이퍼링크 일괄 제거하기 [레벨:30]a☆ 2005-07-21 5110
46 엑셀의 내용을 복사해서 메모장을 띄우고 붙여넣기 [레벨:30]a☆ 2005-07-21 4917