Sql 通过QueryTables运行带有变量的查询

Sql 通过QueryTables运行带有变量的查询,sql,excel,vba,variables,odbc,Sql,Excel,Vba,Variables,Odbc,我创建了一个基本子单元来运行查询并在单元格A1中的活动工作表中返回结果 Sub MySub() '组装连接字符串 strDSN=“MyDSN” strPass=“MyPass” strUsername=“MyUser” strConnection=“ODBC;DSN=“&strDSN&”UID=“&strUsername&”PWD=“&strPass strQuery=“MyQuery” 使用ActiveSheet.QueryTables.Add(连接:=strConnection,目标:=单元

我创建了一个基本子单元来运行查询并在单元格A1中的活动工作表中返回结果

Sub MySub()
'组装连接字符串
strDSN=“MyDSN”
strPass=“MyPass”
strUsername=“MyUser”
strConnection=“ODBC;DSN=“&strDSN&”UID=“&strUsername&”PWD=“&strPass
strQuery=“MyQuery”
使用ActiveSheet.QueryTables.Add(连接:=strConnection,目标:=单元格(1,1))
.CommandText=strQuery
.FieldNames=True
.RefreshStyle=0
.AdjustColumnWidth=True
.Refresh BackgroundQuery:=False
以
端接头
此子项适用于以下查询:
从[WBServiceLogs]中选择不同的前三名时间

如果我在SQL中声明了一个变量,则sub将失败,例如:
Declare@Shift INT SET@Shift=100从[WBServiceLogs]中选择不同的前三名时间+@Shift]

我收到一个错误:
应用程序定义的错误或对象定义的错误

查询本身是正常的,它在SQLServerMGTStudio中运行良好。或通过ODBC,例如WinSQL

有什么建议吗?谢谢