Excel VBA将参数传递到OLEDBConnection

Excel VBA将参数传递到OLEDBConnection,vba,excel,Vba,Excel,在Excel工作簿中,我有几个到SQL Server数据库的连接。我想我可以运行一个像下面这样的小脚本,但它没有做我想要的。我想刷新OLEDB连接,并传入StartDate和EndDate,但它实际上并没有与连接通信 Sub RefreshWithDates() Dim StartDate As Date Dim EndDate As Date StartDate = Sheets("Pivot_Summary").Range("B1").Value EndDate = Sheets("Pi

在Excel工作簿中,我有几个到SQL Server数据库的连接。我想我可以运行一个像下面这样的小脚本,但它没有做我想要的。我想刷新OLEDB连接,并传入StartDate和EndDate,但它实际上并没有与连接通信

Sub RefreshWithDates()

Dim StartDate As Date
Dim EndDate As Date

StartDate = Sheets("Pivot_Summary").Range("B1").Value
EndDate = Sheets("Pivot_Summary").Range("B2").Value

    With ActiveWorkbook.Connections("FMDDATA_HIST_SPLIT").OLEDBConnection
        .CommandText = "SELECT * FROM RECONCILIATION.dbo.TBL_FMDDATA_HIST_SPLIT Where AsOfDate between '" & StartDate & "' & " And " & '" & EndDate & "'"
        ActiveWorkbook.Connections("FMDDATA_HIST_SPLIT").Refresh
    End With

End Sub

您的
.CommandText
字符串在
周围有一个错误(注意它的颜色是蓝色的……它正在解析为VBA关键字

应改为:

"EXEC SELECT * FROM RECONCILIATION.dbo.TBL_FMDDATA_HIST_SPLIT 
WHERE AsOfDate between '" & StartDate & "'" & " AND " & "'" & EndDate & "'"

可能它正在通信,但失败了,因为sql server期望的日期格式与VBA用于日期的格式不同。考虑使用<代码>测试()/代码>函数来更改SQL中的“<代码>文本(StaseDead,yyyy-MM-DD))<代码>。必须将命令类型设置为默认值,然后相应地更新命令文本。就这样。