在MS Excel中导入SQL数据库表后,使用VBA创builddynamic查询

这是一个困扰了我几天的问题,也是我一直在努力的一个问题。 不幸的是,我对这个东西的研究很新,而且没有太多的资源来解决这个问题,所以如果我不清楚或者有什么问题,请发表评论。

我试图解决的问题是这样的:

从SQL Server获取外部数据并在电子表格中包含表格后,称为产品,并具有productid(A列),productname(B列),supplierid(C列)和categoryname(D列) 。 有没有一种方法来定义一个单元格,比如E1,你可以使用VBA创build一个dynamic查询。 在这个dynamic查询中,你会input一些categoryname的值来查询表,并给你结果?

这是一个可能有帮助的链接 。

它使用VBA进行过滤。

我前一段时间发现,当我寻找类似的东西时,希望它有帮助。

可以在不使用任何VBA的情况下执行dynamic查询。

将您的表基于“从Microsoft Query”(在“数据”选项卡上的“获取外部数据”组下)。 使用查询向导build立您的查询,select感兴趣的表列。 在“查询向导 – filter数据”选项卡上,通常情况下,某个特定列的值必须是特定值,而不是特定值,只需使用问号(对于任何和所有需要用于过滤的列) 。 当您将数据返回到Excel时,系统会提示您为每个“input参数值”? 你用过。 只需在这个阶段点击确定。

当Excel“导入数据”对话框出现时,单击“属性…”。 在“定义”选项卡上,单击标有“参数…”的button。 对于每个参数,select“从下一个单元获取值”和“当单元格值更改时自动刷新”。 点击红色箭头button(select一个单元格),然后点击每个参数将从中获取其值的单元格。

在每个单元格旁边都有一个标签是一个好主意,并且可能会为数据input单元格设置特殊的格式。 结果表可以与参数条目单元位于同一工作表上,当您在条目单元格中input一个值时,将会运行一个新的查询并显示结果。