意外的参数请求

为了允许使用不同Windows版本的用户运行查询,我实现了一个提示,询问用户是否在Windows 10上。如果用户select否,则会popup一个消息框,请求一个通用参数值。 不知道为什么发生这种情况。 有任何想法吗?

'Prompt user to choose which version of Windows they have constringopt = MsgBox("Do you have Windows 10?", vbYesNoCancel, "IMAG Data") If constringopt = vbYes Then 'Import data: Windows 10 version With ActiveSheet.QueryTables.Add(Connection:="ODBC;DRIVER={Oracle in OraClient11g_home1};UID=XXX;PWD=XXX;SERVER=XXX;DBQ=XXX", _ Destination:=Range("A2"), Sql:=QryStr) .MaintainConnection = False .BackgroundQuery = False .RefreshStyle = xlOverwriteCells .Refresh .Delete End With ElseIf constringopt = vbNo Then 'Import data: != Windows 10 version With ActiveSheet.QueryTables.Add(Connection:="ODBC;DRIVER={Microsoft ODBC for Oracle};UID=XXX;PWD=XXX;SERVER=XXX;", _ Destination:=Range("A2"), Sql:=QryStr) .MaintainConnection = False .BackgroundQuery = False .RefreshStyle = xlOverwriteCells .Refresh .Delete End With Else GoTo Finish_Sub End If 

简化不带参数的查询,然后尝试连接。 如果有效,可以在这里find答案: 使用带有Oracle ODBC连接的参数

如果你不想popup窗口,你可能想用单元格来传递参数:看看这里: Excel:使用单元格值作为SQL查询的参数