返回列表 上一主題 發帖

EXCEL 發出聲音

EXCEL 發出聲音

有一個工作表需要不停輸入資料
能否利用IF 條件, 當輸入資料遇到錯誤時發出聲音
請指教

我有個疑問
我在vba裡面用這個
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Function SndPlay(Pathname As String) As Long
SndPlay = sndPlaySound(Pathname, SND_ASYNC)
End Function

但是打開會一直叫,等他叫完才可以開始使用,是我哪邊寫錯還是缺了什麼嗎?

TOP

回復 24# GBKEE
http://hi.baidu.com/_pt98/item/a65477da91588e36e1f46f17

找到這些想辦法要使用它
使用wav檔,檔案太大了。同樣的聲音mp3只要0.1就夠了


API播放WAV,AVI,MP3,MID(來自網絡)

1.avi

' In standard module:
Public Play As Boolean
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As String, ByVal uReturnLength _
As Long, ByVal hwndCallback As Long) As Long
Private Returnstring As String

Sub AVI_Play()
Const FileName As String = "c:\mybestfile.avi"
If Dir(FileName) = "" Then Exit Sub
If Play Then AVI_Stop
Returnstring = Space(127)
mciSendString "open " & Chr(34) & FileName & Chr(34) _
& " type avivideo alias video", Returnstring, 127, 0
mciSendString "set video time format ms", Returnstring, 127, 0
mciSendString "play video from 0", Returnstring, 127, 0
Play = True
End Sub

Sub AVI_Stop()
mciSendString "close video", Returnstring, 127, 0
Play = False
End Sub

'In ThisWorkbook module:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Play Then AVI_Stop
End Sub

2.mp3

Option Explicit
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Private Function ConvShortFilename(ByVal strLongPath$) As String
    Dim strShortPath$
    If InStr(1, strLongPath, " ") Then
        strShortPath = String(LenB(strLongPath), Chr(0))
        GetShortPathName strLongPath, strShortPath, Len(strShortPath)
        ConvShortFilename = Left(strShortPath, InStr(1, strShortPath, Chr(0)) - 1)
    Else
        ConvShortFilename = strLongPath
    End If
End Function

Public Sub MMPlay(ByRef FileName As String)                           '
    FileName = ConvShortFilename(FileName)                            '
    mciSendString "close " & FileName, vbNullString, 0, 0
    mciSendString "open " & FileName, vbNullString, 0, 0
    mciSendString "play " & FileName, vbNullString, 0, 0
End Sub

Public Sub MMStop(ByRef FileName As String)
    FileName = ConvShortFilename(FileName)                            '
    mciSendString "stop " & FileName, vbNullString, 0, 0
    mciSendString "close " & FileName, vbNullString, 0, 0
End Sub

3.wav

Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwflags As Long) As Long

Sub Warning()
  PlaySound ThisWorkbook.Path + "\Warning.wav", 0&, &H1
End Sub

4.mid
Public Declare Function mciExecute Lib "winmm.dll" Alias " mciExecute" (ByVal lpstrCommand As String) As Long

Private Sub play()
Dim ReturnValue As Long
ReturnSoundValue = mciExecute("play C:\WIN95\MEDIA\CANYON.MID")
End Sub
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 23# 自我感覺良好
就在這主題理

TOP

Option Explicit

'API Class to take care of playing the file
Public Declare Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
                        ByVal uFlags As Long) As Long

聲音檔是wav
若要用mp3
那要怎樣改?
50 字節以內
不支持自定義 Discuz! 代碼

TOP

Call sndPlaySound32(ActiveWorkbook.Path & "\LoadIt.WAV", 0)
Call sndPlaySound32(ActiveDocument.Path & "\LoadIt.WAV", 0)

excel跟word是不一樣的。
太感謝了
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 20# 自我感覺良好
你是在Excel 應用程式的VBA

  Call sndPlaySound32(ActiveWorkbook.Path & "\LoadIt.WAV", 0)

TOP


還是不能用﹗
幫我看一下那裡出錯了……回復 19# GBKEE
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 18# 自我感覺良好
  1. Option Explicit
  2. 'API Class to take care of playing the file
  3. Public Declare Function sndPlaySound32 Lib "winmm.dll" _
  4. Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
  5.                         ByVal uFlags As Long) As Long
  6. Sub VBASound()
  7.     'Call Api to play LoadIt.wav witch is in the same folder as
  8.     'the active document!->ActiveWorkbook
  9.     Call sndPlaySound32(ActiveWorkbook.Path & "\LoadIt.WAV", 0)
  10.    
  11. End Sub
複製代碼

TOP

Play Sound.rar (40.73 KB) 附件是word要怎樣改成excel?
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題