You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:35:21