返回列表 上一主題 發帖

EXCEL 發出聲音

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

TOP


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

TOP

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

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

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

回復 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

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題