2013-07-03 71 views
0

我想创建一个VBA程序,它连接到您给它的数据库(硬编码)。从这里开始,您将编程一个单元格,以便在查询中为WHERE子句输入数据,然后在另一个工作表中输出查询的数据。我不想过滤这些数据,我需要查询它。谁能帮忙?使用VBA查询SQL数据库

+0

什么样的数据库? Excel在'Data >> Get External Data'下有工具可以做到这一点,所以试着录制一个宏,看看你是否可以修改它来做你所需要的。 –

+0

步骤#1防范SQL注入 - 请参阅[这里](http://xkcd.com/327/)步骤#2告诉我们你想连接的数据库的类型 – barrowc

回答

1

您可以使用Microsoft Query执行此操作。基本步骤是:

1 - 连接到使用数据>自其他来源> Microsoft Query中的数据库

2 - 右键cliking结果表中,选择表>外部数据属性并单击修改结果查询上角的小图标。然后选择定义选项卡:

enter image description here

3 - 右键单击​​该表并选择参数。在该对话框中,您可以设置单元格以保存Where子句的参数。

欲了解更多信息,请参阅此MSDN页面和此Daily Dose post

+0

所以道格,我做了你所说的那里,并得到了工作。我同时运行一个宏,因为我想获得VBA代码,所以我可以在需要时更改它。当我尝试运行宏后,我不断收到一个错误,说下标超出范围时会出现运行时错误。当我点击调试以显示错误时,它指向我:使用ActiveWorkbook.Connections(“来自ProductId的查询”).ODBCConnection。 –

+0

这意味着您的连接名称不是“从ProductId查询”。我猜它现在可能是“来自ProductId2的查询”。这种编程不是微不足道的,所以你必须弄清楚一堆这样的事情。基于这一点信息,我建议你编程它每次使用相同的连接,这意味着不会添加一个新的。当我说这些时听起来很明显,如果没有太大的帮助,很抱歉。 –