大数跨境
0
0

Access声音系统完全指南:从Beep到PlaySound

Access声音系统完全指南:从Beep到PlaySound Access开发
2025-10-22
1
导读:从Beep到PlaySound

hi,大家好!

最近,在开发一个扫码的小功能,在用扫码枪扫描后,会有“滴”的一声响,但用户提了一个需求,在扫描结束后,点击按钮时,可以再给一个提示反馈。对于这个需求,我们给了一个肯定的答案,当然是可以实现的,今天就教大家如何给Access系统加上"声音反馈",让你的应用瞬间提升一个档次!

🎵 Access发声的3种方法

方法1:Beep(最简单,1秒搞定)

这是VBA自带的蜂鸣函数,无需任何声明,直接用!

'最简单的示例PrivateSub btnSave_Click()    '保存数据    DoCmd.RunSQL "INSERT INTO..."        '发出提示音    Beep        MsgBox "保存成功!", vbInformationEndSub

优点:

✅ 超简单,一行代码搞定

✅ 不需要外部文件

✅ 兼容所有Windows版本

缺点:

❌ 只能发出系统默认的"哔"声

❌ 不能自定义音色

❌ 无法控制音量和时长

适用场景:
快速原型、简单提醒、不需要特殊音效的场合


方法2:PlaySound(推荐,专业级)

调用Windows API播放WAV文件,可以自定义各种音效!

1、添加一个模块

' 模块:播放声音声明与辅助OptionCompare DatabaseOptionExplicit#If VBA7 Then    PrivateDeclare PtrSafe Function PlaySound Lib"winmm.dll"Alias"PlaySoundA" _        (ByVal lpszName AsStringByVal hModule As LongPtr, ByVal dwFlags AsLongAsLong#Else    PrivateDeclareFunction PlaySound Lib"winmm.dll"Alias"PlaySoundA" _        (ByVal lpszName AsStringByVal hModule AsLongByVal dwFlags AsLongAsLong#EndIfPublicConst SND_SYNC      AsLong = &H0        ' 同步播放(等待结束)PublicConst SND_ASYNC     AsLong = &H1        ' 异步播放(立即返回)PublicConst SND_NODEFAULT AsLong = &H2PublicConst SND_LOOP      AsLong = &H8        ' 与 SND_ASYNC 一起使用进行循环PublicConst SND_FILENAME  AsLong = &H20000    ' 指定文件名PublicConst SND_PURGE     AsLong = &H40       ' 停止所有播放' 播放指定 wav 文件 (异步)PublicSub PlayWavFile(ByVal fullPath AsString)    If Dir(fullPath) = ""Then        Err.Raise vbObjectError + 513, , "找不到声音文件: " & fullPath    EndIf    PlaySound fullPath, 0, SND_ASYNC Or SND_FILENAMEEndSub' 停止所有播放PublicSub StopSoundPlayback()    PlaySound vbNullString, 0, SND_PURGEEndSub


2、准备音效文件

在数据库同目录创建 Sounds 文件夹,放入WAV文件,我这里是直接调用的Windows自带的,路径为:C:\Windows\Media

你也可以和我一样,调用系统本身的音效。

代码测试:

PrivateSub Command0_Click()    OnErrorGoTo ErrHandler                '播放成功音效    PlayWavFile "C:\Windows\Media\Ring01.wav"        MsgBox "保存成功!", vbInformation    ExitSub    ErrHandler:    '播放错误音效    PlayWavFile "C:\Windows\Media\Ring01.wav"    MsgBox "保存失败:" & Err.Description, vbCriticalEndSub

优点:

✅ 可以自定义各种音效

✅ 支持异步/同步播放

✅ 可以循环播放(背景音乐)

✅ 可以随时停止

缺点:

❌ 只支持WAV格式

❌ 需要准备音效文件


方法3:系统声音(不推荐,但了解一下)
调用Windows系统事件声音:
'使用系统默认的提示音PrivateDeclare PtrSafe Function MessageBeep Lib"user32" (ByVal wType AsLongAsLongPrivateSub btnTest_Click()    '0=默认, 16=停止, 32=问号, 48=感叹号, 64=星号    MessageBeep 64  '播放"星号"提示音EndSub

我们来看一下效果:



一句话总结

给系统加上声音,就像给哑巴装上嘴巴!

  • 用户体验瞬间提升

  • 操作效率成倍增长

  • 错误率大幅下降

  • 系统逼格直线上升

最重要的是:实现超级简单,一行代码就能搞定基础功能!

觉得有用请点赞👍 + 转发,让更多人的Access系统"会说话"!





【声明】内容源于网络
0
0
Access开发
面向Access爱好者与Access专业开发人员的技术服务平台,日常分享Access开发学习与实践中的点滴。
内容 187
粉丝 0
Access开发 面向Access爱好者与Access专业开发人员的技术服务平台,日常分享Access开发学习与实践中的点滴。
总阅读255
粉丝0
内容187