使用VBA替换OLEDB连接中的多个命令文本变量和单元格值

时间:2014-12-05 23:19:14

标签: sql excel vba

我仍然是VBA的新手,并且在使用它时遇到了一些困难。我在Excel 2013中连接到SQL,并在命令文本中使用特定脚本。我想构建一个VBA宏,允许我将脚本处理的日期范围设置为特定的单元格值。

示例命令文本:

Select [FIELD NAME]
from [TABLE NAME]
where [DateField] between [DateStart] and [DateEnd]

在上面的场景中,假设我想设置[DateStart] =" E8"和[DateEnd] =" E9"我该怎么做呢?我读过的大多数帖子都说使用Microsoft查询来设置参数,但是我的计算机似乎不支持这样做。

1 个答案:

答案 0 :(得分:0)

您可以使用替换功能,因为SQL查询只是VBA的字符串表达式:

sqlStatement = "Select [FIELD NAME] from [TABLE NAME] where [DateField] between [DateStart] and [DateEnd]"

dateStart = Year(Range("E8").value) & "-" & Month(Range("E8").value) & "-" & Day(Range("E8").value)
dateEnd = Year(Range("E9").value) & "-" & Month(Range("E9").value) & "-" & Day(Range("E9").value)

sqlStatement = Replace(sqlStatement, "[DateStart]", dateStart)
sqlStatement = Replace(sqlStatement, "[DateEnd]", dateEnd)