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

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

기타 조회 수 7500 추천 수 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 34021