2016-11-28 91 views
0

表名是excel中的DATA,使用VBA中的F4属性而不是sheet1我已将其更改为sData。sql查询vba ADO

我的AQL查询没有返回任何result.I需要从VBA同一工作簿中的数据表中提取的列。

我的代码是:

Sql = "Select productNumber from [shtData$] where produvtDesc = "&pDes&" " 
'pDesc is a string variable that stores description. 

这是我们如何在SQL查询把表的名字吗?我试过[Data $],但它不起作用。

请帮忙。

回答

0

既然你没有添加关于我假设的任何代码您正确设置了连接。

  • 使用您在excel中看到的表名,而不是F4代码(name)。有尾随$和方括号中使用它像你这样
  • 我认为pDes不包含引号的字符串。因此,加引号的地方,绕圈
  • here关于如何建立一个ADO连接到Excel
  • 另外,一个SQL到一个Excel的这个例子中工作,即使你的实际ADO连接是指到另一个数据库:

    SELECT * FROM [data$A1:E1000] IN 'C:\path\MyFile.xlsx' [Excel 12.0;HDR=YES;IMEX=0] 
    

编辑:对于需要不同的特性,如上面的链路描述的XLS。

  • 我假设你的文件被称为data.xls,它包含一个名为data

  • 这个作品,如果存储在一个字符串,然后用作连接字符串表:

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\data.xls; 
    Extended Properties="Excel 8.0;HDR=YES"; 
    

    并与此配对sql

    Sql = "Select productNumber from [data$] where produvtDesc = '" & pDes & "'" 
    
  • ,因为要使用动态路径尝试

    myCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filepath & "\data.xls;Extended Properties=""Excel 8.0;HDR=YES"";" 
    

    他们关键是要逃脱双引号"与第二"

+0

所以我的SQL变为:从[数据$]选择productNumber哪里productDesc ='“&pDesc&”'“。在设置连接时,我的连接是正确的,但正如你提到的路径动态获取路径,存储在一个变量,然后我想把Data.xls,串联可能是你可以说。 –

+0

所以“Data Source =”&pathname&“Data.xls”&“;”,这是对的吗? –

+0

我不知道如何把路径,得到一个suntax错误 –

0

我认为你的pDesc变量有一个错字。在说明中,您称其为'pDesc',但在SQL命令字符串中称其为'pDes'。

另外,有没有可能是你有什么DBMS是您正在使用参考表名称时区分大小写(因此所以应该是[数据$])?我知道大多数DBMS的默认敏感型的情况下,但我相信它可以配置它是在情况设置流程敏感...