Excel中的Microsoft Query VBA – 如何传递datefilter

我真的希望在这里有人能帮我解决我花了几个小时试图解决问题而没有结果的问题。

我想在Excel VBA中使用MS查询build立与csv文件的数据连接。 我需要通过在特定列上应用datefilter将数据从csv文件过滤到电子表格中。 当date固定(即在VBA中硬编码)时,连接工作绝对正常。 不过,我希望date是用户input,这就是我遇到的问题。 基本上,我不知道如何将datevariables传递给连接。

当macros正常工作时,SQL语句如下所示:

.CommandText = "SELECT * FROM " & csvName & " WHERE SECTYPE='GS' AND LAST TRADED DATE={ts '2016-01-29 00:00:00'}"

当我尝试通过variablessValnDate传递date时,我得到'SQL语法错误':

.CommandText = "SELECT * FROM " & csvName & " WHERE SECTYPE='GS' AND LAST TRADED DATE={ts " & sValnDate & "}"

我已经尝试了几个variables的configuration。 我试图把它作为一个date,一个string正确的命令,一个正确的命令格式的date,保留和删除每个格式的variables等大括号,但没有任何工作。

我刚才在这里提出了一个声明,以保持简单。 但是,如果您需要查看整个区块(不超过15-20行),请告诉我。

提前致谢

PS:只是看了预览。 不知何故,“最近的交易date”在这里被删除。

假设sValnDate是一个看起来像2016-01-29 00:00:00的string,那么你只是缺less蜱(又名单引号或Chr(39))。

 .CommandText = "SELECT * FROM " & csvName & _ " WHERE [SECTYPE]='GS' AND [LAST TRADED DATE]={ts '" & sValnDate & "'}" 

如果sValnDate是一个实际的date然后格式化它,

 .CommandText = "SELECT * FROM " & csvName & _ " WHERE [SECTYPE]='GS' AND [LAST TRADED DATE]={ts '" & _ Format(sValnDate, "yyyy-mm-dd hh:mm:ss" & "'}"