【问题标题】:VBA throws an error when picking up cell values into SQL query将单元格值提取到 SQL 查询中时 VBA 引发错误
【发布时间】:2020-12-20 16:51:06
【问题描述】:

从某些单元格中为我的 SQL 提取值时出现以下错误。但是,当我将值硬编码到代码中时,它可以正常工作。所以,这显然与我编写它的语法有关。

出于几个原因,我希望使这种动态变化,并希望有人可以帮助我。

错误:Microsoft Access 数据库引擎找不到对象“objectname”

值被硬编码的工作代码:

mySQL = "SELECT * FROM [listname];"
With cnt
.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {0C3G7BTF-000E-4C16-8E07-E4B7F525069F};"
.Open
End With

不起作用的代码:

mySQL = "SELECT * FROM ['" & Sheet3.Range("c1") & "'];"
With cnt
.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {'" & Sheet3.Range("d1") & "'};"
.Open
End With

【问题讨论】:

    标签: sql vba excel-2007


    【解决方案1】:

    我建议将您的连接字符串值放入一个变量中,然后打印它(例如 debug.print myConnectionString)以执行每个字符的比较。

    此外,您在对 sheet.range("d1") 的引用周围有单引号

    "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {'" & Sheet3.Range("d1") & "'};"
    

    也许这些是您的问题的原因。您似乎在 mySQL 变量分配中遇到了同样的问题。

    编辑:

    也许这可行:

    mySQL = "SELECT * FROM [" & Sheet3.Range("c1") & "];"
    myConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {" & Sheet3.Range("d1") & "};"
    debug.print myConnectionString
    'Open execution window (ctrl g) to get the value of myConnectionString
    
    With cnt
    .ConnectionString = myConnectionString
    .Open
    End With
    

    【讨论】:

    • 删除单引号会产生预期的:语句结束错误
    • 能否尝试将连接字符串存储在一个变量中(而不是直接将其分配给您的连接对象),并将其打印到执行窗口并显示结果以便我们进行比较?
    • 另外,我认为您删除了双引号,而不是单引号。
    • 我之前确实尝试过分配给一个字符串变量,并且有同样的运气。你能给我你提到的关于删除引号的部分的代码吗?我可能会以不同的方式误解它,并且我删除的任何引用都不起作用。另外,我不太确定如何做你提到的 debug.print 事情:p
    • 我试过这个并得到同样的错误 - ;LIST= { " & Sheet3.Range("d1") & " };"
    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 2012-12-29
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多