0

我正在使用 vba 连接到 Excel 中的 SQL Server。我创建了一个 QueryTable 对象,并将 .odc 的路径作为 Connection 参数传递。

odc 文件如下所示:

<xml id=docprops></xml><xml id=msodc><odc:OfficeDataConnection
xmlns:odc="urn:schemas-microsoft-com:office:odc"
xmlns="http://www.w3.org/TR/REC-html40">
<odc:Connection odc:Type="OLEDB">
<odc:ConnectionString>Provider=SQLOLEDB.1;Persist Security Info=True;User   ID=sa;Password=thepassword;Data Source=server\MAPS,1433;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=MYID;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DIALIMENTOS</odc:ConnectionString>
<odc:CommandType>Table</odc:CommandType>
</odc:Connection>
</odc:OfficeDataConnection>
</xml>

QueryTables 工作正常,但是当我创建它们时,会出现一个窗口,要求我选择用于连接的表。我不需要这个,因为查询在 vba 中。

当我创建 QuerTables 时,如何防止这些窗口出现?我在 odc 文件中遗漏了什么吗?

4

1 回答 1

1

您的 ODC 文件定义到服务器的连接(连接字符串)并指定查询将查找表(通过命令类型)。但是,您没有指定表名,因此 Excel 会弹出一个窗口并要求提供一个。

我没有对此进行测试(我通常使用 ODC 来调用存储过程),但我猜想防止这种情况发生是在 ODC 文件中指定一个表。您选择的表无关紧要(尽管它应该存在),因为您的 VBA 代码应该根据您的问题覆盖它。

尝试在 CommandType 行之后插入以下行:

<odc:CommandText>sometablename</odc:CommandText>

这应该足以让 Excel 停止纠缠你。

于 2013-09-12T02:02:36.323 回答