【问题标题】:How can I resolve this error message "Compile Error: User-defined type not defined" in Microsoft VBA如何在 Microsoft VBA 中解决此错误消息“编译错误:未定义用户定义的类型”
【发布时间】:2018-05-29 23:03:05
【问题描述】:

我是 Microsoft-VBA 的新手,我试图让 Excel 在 MSSQL Server 中运行存储过程,并将记录添加到为此目的创建的表中。但是每次我尝试运行它来测试我的代码时,我都会收到此错误消息。我已经审查并实施了该论坛上建议的一些解决方案,但我无法使其发挥作用。例如,我已经在工具 > 参考中激活了“Microsoft ActiveX 数据对象记录集 2.8 库”,但我仍然遇到同样的错误。如果有人可以查看我的代码并告诉我我做错了什么,我会很高兴。

This image contains the code and error message


Sub My_Test_Report()

    Dim objConn As New ADODB.Connection
    Dim objCmd As New ADODB.Command
    Dim objParm1 As New ADODB.Parameter
    Dim objRs As New ADODB.Recordset

    objCmd.CommandText = "[Report Queries].[dbo].[My_Test_Report]"
    objCmd.CommandType = adCmdStoredProc
    Set objConn = GetNewConnection
    objCmd.ActiveConnection = objConn
    objCmd.Parameters.Refresh
    objCmd(1) = True
    Set objRs = objCmd.Execute

End Sub

【问题讨论】:

  • 将代码作为文本而不是照片,以便我们可以复制粘贴和测试。
  • 哪一行产生了错误?我不确定您要做什么,但我知道“参数”不是这样拼写的……
  • 哪一行出错了?
  • @ashleedawg,产生错误的行是“Dim objConn As New ADODB.Connection”
  • 尝试2.72.62.5 库版本

标签: sql-server excel vba stored-procedures adodb


【解决方案1】:

我同意 ashleedawg3,你有“参数”与“参数”。当我尝试编译时,我得到了相同的错误,并在该特定行上突出显示:

这里的线索是编译器看到一个它不知道的类型,所以你得到“用户定义的类型,未定义”

尝试调整拼写,看看是否能解决问题....

【讨论】:

  • @RJKelly 我按照标识进行了更正,但它仍然给我相同的错误消息并指向相同的代码行。我的连接错了吗
【解决方案2】:

我认为您缺少第二个库。转到 ToolsReferences 并添加两者:

☑Microsoft ActiveX 数据对象 6.1 库

☑ Microsoft ActiveX 数据对象 Recordset 6.0 库

(取消选中相同库的任何较低版本。)

请注意,当给定选择同一库的不同版本时,它通常最好用于获得最高版本号。

【讨论】:

  • 我能够让它连接。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多