excel vba在单元格中读取SQL SELECT语句

时间:2017-07-03 17:39:51

标签: sql excel vba excel-vba

我在单元格中有一个SQL SELECT查询 (image)。我试图使用VBA将我的单元格中的字符串用作SQL查询的字符串,但它只读取字符串的一部分。在单元格中,查询(不带引号)长度为685个字符。在变量中(在运行时),查询是(带引号)185个字符长。这是单元格中的查询:

SELECT Contacts.[Last Name], 
       Contacts.[First Name], 
       Contacts.[Maricom E-Mail], 
       Contacts.[Project, Org, Team] 
FROM Contacts 
WHERE (((Contacts.[Project, Org, Team])=""Proj - MDM"") 
       AND ((Contacts.[Active?])=Yes)) 
    OR (((Contacts.[Project, Org, Team])=""Team%"") 
       AND ((Contacts.[Active?])=Yes)) 
    OR (((Contacts.[Project, Org, Team])=""Orgs - CM"") 
       AND ((Contacts.[Active?])=Yes)) 
    OR (((Contacts.[Project, Org, Team])=""Orgs - Document Team"") 
       AND ((Contacts.[Active?])=Yes)) 
    OR (((Contacts.[Project, Org, Team])=""Orgs - Process Engineering"") 
       AND ((Contacts.[Active?])=Yes)) 
    OR (((Contacts.[Project, Org, Team])=""Orgs - QA"") 
       AND ((Contacts.[Active?])=Yes)) 
ORDER BY Contacts.[Last Name];

以下是我用来读取单元格的代码(我在代码中使用了“dim myQuery as string”,单元格格式化为文本):

myQuery = Range("Project1Query").Value

以下是变量中已声明为字符串的查询:

"SELECT Contacts.[Last Name], 
        Contacts.[First Name], 
        Contacts.[Maricom E-Mail], 
        Contacts.[Project, Org, Team] 
FROM Contacts 
WHERE (((Contacts.[Project, Org, Team])=""Proj - MDM"") AND "

然后在以下数据请求中使用该变量:

ReviewersData.Open myQuery, ReviewersConn, adOpenStatic, adLockOptimistic

有关如何切断500个角色的任何想法?

2 个答案:

答案 0 :(得分:0)

在获取Range()之前,尝试将工作表中的双引号替换为Chr(34)。值。

答案 1 :(得分:0)

我发现我尝试访问变量值的方式导致它显示为截断。我右键点击" locals"中的变量值。 VB IDE的框架,选择副本,然后将剪贴板中的内容粘贴到记事本中。那里的字符串被截断了。当我做了文本的msgbox时,它是正确的。