Access中子窗体视频地址传递至Windows Media Player报错求助
Access窗体WMP控件赋值视频地址报错解决方案
问题场景
我正在开发一个关联用户与培训视频的Access数据库,主窗体2_CCC上的Windows Media Player插件可正常播放直接写入路径的视频。子窗体存储所有视频文件,视频地址存在名为Video的文本框中。
尝试用以下VBA代码传递地址时出现Automation error:
Public Sub PlaybButton_Click() Dim videoaddress As String videoaddress = Forms![2_CCC]![2_CCC_Subform].Form![Video] Forms![2_CCC]!WMP.URL = videoaddress End Sub
简化代码后仍报错,在主窗体新增VideoSelect文本框,通过MsgBox确认能正确获取地址,但将其值赋值给WMP控件时,出现You entered an expression that has an invalid reference to the property错误,仅直接写死文件路径可正常播放。
解决方法
1. 校验路径与控件引用准确性
- 确保
Video文本框中的路径是本地绝对路径(如C:\TrainingVideos\demo.mp4),路径中若包含空格或特殊字符,可尝试用Chr(34)包裹(如videoPath = Chr(34) & Trim(subForm.Controls("Video").Value) & Chr(34))。 - 打开主窗体设计视图,查看子窗体控件的名称(注意区分子窗体对象名和控件名),替换代码中
[2_CCC_Subform]为实际控件名。
2. 修正VBA代码逻辑
通过对象引用替代硬编码路径验证,并增加错误处理:
Public Sub PlaybButton_Click() Dim videoPath As String Dim mainForm As Form Dim subForm As Form ' 获取窗体对象,避免硬编码引用错误 Set mainForm = Forms("2_CCC") Set subForm = mainForm.Controls("2_CCC_Subform").Form ' 获取并清洗视频路径 videoPath = Trim(subForm.Controls("Video").Value) ' 验证文件是否存在 If Dir(videoPath) <> "" Then On Error Resume Next ' 优先尝试URL属性赋值 mainForm.Controls("WMP").URL = videoPath ' 若URL赋值失败,改用FileName属性 If Err.Number <> 0 Then Err.Clear mainForm.Controls("WMP").FileName = videoPath End If On Error GoTo 0 Else MsgBox "视频文件不存在或路径无效:" & videoPath End If End Sub
3. 检查WMP控件状态与权限
- 打开主窗体设计视图,确认WMP控件的名称属性确实为
WMP,保证代码引用一致。 - 检查Access程序是否有视频文件所在目录的读取权限,避免因权限不足导致控件加载失败。
- 修复WMP控件注册:以管理员身份打开命令提示符,执行
regsvr32.exe wmp.dll。
内容的提问来源于stack exchange,提问作者Lowendz113
相关产品推荐
相关产品推荐

