Ror*_*ory 36 excel vba excel-2007 ms-query
我经常使用MS Excel Get External Data来创建简单的报表 - 针对数据库运行查询并在Excel中很好地显示.Excel的过滤和数据透视表以及用户熟悉的界面等强大功能使其非常有用.但是,Microsoft Query的一个限制是您无法向无法以图形方式显示的查询添加参数,这极大地限制了您可以编写的SQL.
是否有任何解决方案错误"无法以图形方式显示的查询中不允许使用参数"?
beh*_*nji 52
Excel的SQL Server查询界面不允许您拥有自定义参数.解决此问题的方法是创建通用Microsoft Query,然后添加参数,然后将参数化查询粘贴到连接的属性中.以下是Excel 2010的详细步骤:
小智 24
简易解决方法(无需VBA)
从这里,通过添加'?'直接编辑SQL 无论你想要什么参数.工作方式和以前一样,除非你没有被唠叨.
如果您使用的是Excel 2007,则可以编写VBA来更改工作簿中的连接(即外部数据查询)并更新CommandText属性.如果您只是添加?您想要参数的位置,那么下次刷新数据时它会提示输入连接的值!魔法.当您查看"连接"的属性时,"参数"按钮现在将处于活动状态并且可以正常使用.
例如,我将编写一个宏,在调试器中逐步执行它,并使其适当地设置CommandText.完成此操作后,您可以删除宏 - 它只是更新查询的一种方法.
Sub UpdateQuery
Dim cn As WorkbookConnection
Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection
For Each cn In ThisWorkbook.Connections
If cn.Type = xlConnectionTypeODBC Then
Set odbcCn = cn.ODBCConnection
' If you do have multiple connections you would want to modify
' the line below each time you run through the loop.
odbcCn.CommandText = "select blah from someTable where blah like ?"
ElseIf cn.Type = xlConnectionTypeOLEDB Then
Set oledbCn = cn.OLEDBConnection
oledbCn.CommandText = "select blah from someTable where blah like ?"
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)