Ms access 在文件路径字符串中使用组合框/文本框中的值

Ms access 在文件路径字符串中使用组合框/文本框中的值,ms-access,vba,variables,vb6,combobox,Ms Access,Vba,Variables,Vb6,Combobox,我有一个表单,我打算允许用户浏览powerpoint演示文稿,因为有很多不同的度量摘要,这就是我使用此数据库的目的。所以,我已经知道如何设置一切,只是有一点挂断 如果我在表单上放置一个组合框以从不同演示文稿列表中进行选择,我可以在文件路径字符串中使用该组合框(我必须使用该组合框将ppt拉入access中的对象帧中) 例如: "C:\Users\Justin\Desktop\" & cmbTitle & ".ppt" 我试过了,它给了我一个错误消息变量未定义。我以前从未在这些东西

我有一个表单,我打算允许用户浏览powerpoint演示文稿,因为有很多不同的度量摘要,这就是我使用此数据库的目的。所以,我已经知道如何设置一切,只是有一点挂断

如果我在表单上放置一个组合框以从不同演示文稿列表中进行选择,我可以在文件路径字符串中使用该组合框(我必须使用该组合框将ppt拉入access中的对象帧中)

例如:

"C:\Users\Justin\Desktop\" & cmbTitle & ".ppt"
我试过了,它给了我一个错误消息变量未定义。我以前从未在这些东西中定义过控件,它会是字符串吗

我意识到确切的文件路径与输入的值非常匹配。Access 2000-2003/XP


一如既往地感谢大家!

您需要将该字段称为
Me.cmbtile
。在编写时,您似乎在调用不存在的变量cmbtile。

您需要将该字段称为
Me.cmbtile
。在编写时,您似乎在调用不存在的变量cmbtile。

是cmbTitle的值是某个ID/整数字段,还是实际的字符串值?您可能希望使用即时窗口来检查这一点。此外,请确保cmbTitle的值没有任何反斜杠或空格(可能需要引号?).

是cmbTitle某个ID/整数字段的值,还是实际的字符串值?您可能需要使用即时窗口来检查这一点。此外,请确保cmbTitle的值没有任何反斜杠或空格(可能需要引号?)。

我对您试图执行的操作有点困惑。我将在假设以下情况下编写我的答案:

  • 您在Access数据库中有一个表单

  • 该表单上有一个组合框,其中列出了用户正在使用的PowerPoint演示文稿

  • 组合框的绑定列列出每个PPT文件的文件名(不带路径)

  • 当用户从组合框中选择文件名时,您希望将其显示在未绑定的OLE对象框中

  • 假设PPT文件列表名为cmbTitle,则其代码将位于组合框的AfterUpdate事件中,如下所示:

      Private Sub cmbTitle_AfterUpdate()
        Dim strPresentation As String
    
        If IsNull(Me!cmbTitle) Then Exit Sub
        strPresentation = "C:\Users\Justin\Desktop\" & Me!cmbTitle & ".ppt"
        Me!olePPT.SourceDoc = strPresentation
      End Sub
    
    现在,我无法使用测试未绑定的OLE对象框架来处理此问题,但在我看来,这是正确的方法


    我的怀疑是您试图设置错误的属性,或者错误地定义了OLE框架,但如果不了解您实际尝试执行的操作,以及导致错误的确切代码行,我将无法提供更多建议。

    我对您尝试执行的操作感到困惑。我将编写假设我的回答是:

  • 您在Access数据库中有一个表单

  • 该表单上有一个组合框,其中列出了用户正在使用的PowerPoint演示文稿

  • 组合框的绑定列列出每个PPT文件的文件名(不带路径)

  • 当用户从组合框中选择文件名时,您希望将其显示在未绑定的OLE对象框中

  • 假设PPT文件列表名为cmbTitle,则其代码将位于组合框的AfterUpdate事件中,如下所示:

      Private Sub cmbTitle_AfterUpdate()
        Dim strPresentation As String
    
        If IsNull(Me!cmbTitle) Then Exit Sub
        strPresentation = "C:\Users\Justin\Desktop\" & Me!cmbTitle & ".ppt"
        Me!olePPT.SourceDoc = strPresentation
      End Sub
    
    现在,我无法使用测试未绑定的OLE对象框架来处理此问题,但在我看来,这是正确的方法


    我怀疑您可能试图设置错误的属性,或者错误地定义了OLE框架,但如果不了解您实际试图执行的操作,以及导致错误的确切代码行,我将无法提供更多建议。

    您是否能够编译VBA?如果编译不是导致错误的原因,则无法提供更多建议错误,这很有意思。因为您的直接目标可能是显示标题,所以不必担心完整路径,只需调试即可。打印标题字符串。更多上下文可能会有所帮助。例如,显示路径的代码。如果他在模块顶部没有OPTION EXPLICIT,任何旧的东西都可以编译e、 此外,还不是100%清楚的是,单行引用的代码实际上是引起错误的代码。我只是得出了这样的结论,因为在我开始尝试将其放入之前,代码运行良好。现在开始吧;不知道我在想什么,不加上我。在前面??谢谢各位,你能编译VBA吗?如果编译不是什么t引发错误,这非常有趣。因为您的直接目标可能是显示标题,所以不必担心完整路径,只需调试即可。打印标题字符串。更多上下文可能会有所帮助。例如,显示路径的代码。如果他在模块顶部没有显式选项,则任何旧的g可以编译。而且,还不是100%清楚引用的一行代码实际上是引起错误的代码。我只是得出了这样的结论,因为在我开始尝试将其放入代码之前,代码运行良好。现在开始吧;不知道我在想什么,不添加我。在前面??谢谢各位,但我认为最好的做法是指定cmbTitle的父级(尽管我会使用Me!cmbtTitle而不是Me.cmbtTitle,它依赖于Access/VBA在后台创建隐藏的属性包装,允许将控件视为窗体的属性;这有编译时验证的一个优点),它不应该是必需的,所以似乎发生了其他事情。这确实起到了作用。不知道我在想什么,不添加我。在它前面!谢谢!但我认为指定CMB标题的父级是最佳做法(虽然我会使用Me!cmbTitle而不是Me.cmbTitle,它依赖于Access/VBA在幕后创建隐藏的属性包装器,允许将控件视为表单的属性;这有一个优点,即编译时验证),但它不应该是必需的,所以似乎还发生了其他事情