从Access VBA调用excel的function.ets

时间:2017-03-21 00:47:52

标签: vba excel-vba ms-access excel

我正在尝试在我的访问项目中从VBA调用excel的FORECAST.ETS,但似乎无论我做什么我都会收到此错误:

  

“VBA错误1004参数数量无效。”

这就是我正在做的事情 -

'**********************************************
Public Sub testFCsof()

Dim testrfXL As Object

Dim testrfNowDate  As Date
Dim testrfempSQLStr As String
Dim testrfempSQLRS As DAO.Recordset

Dim testrfRecNo As Integer

Dim testrfDateARRAY() As Date
Dim testrfPointsARRAY() As Double

Dim testrfFDFCAST As Double
Dim fdtestempID As Long

On Error GoTo Err_testrfNBA

Set todaysDB = CurrentDb()

fdtestempID = 382

testrfFDFCAST = 1000000

testrfempSQLStr = "SELECT NBAFANempPER.eventTime, NBAFANempPER.FDpoints " & _
            "FROM NBAFANempPER WHERE ((NBAFANempPER.empID)= " & fdtestempID & ") ORDER BY NBAFANempPER.eventTime;"

Set testrfempSQLRS = todaysDB.OpenRecordset(testrfempSQLStr, dbOpenDynaset, dbSeeChanges, dbReadOnly)

If Not (testrfempSQLRS.BOF And testrfempSQLRS.EOF) Then 'only do this if we have records

testrfempSQLRS.MoveLast

ReDim testrfDateARRAY(testrfempSQLRS.RecordCount - 1)
ReDim testrfPointsARRAY(testrfempSQLRS.RecordCount - 1)

testrfempSQLRS.MoveFirst

testrfRecNo = 0

Do While Not testrfempSQLRS.EOF

    testrfDateARRAY(testrfRecNo) = CDate(dateHeadFunk(CDate(testrfempSQLRS!eventTime)))
    testrfPointsARRAY(testrfRecNo) = CDbl(testrfempSQLRS!FDpoints)

    testrfRecNo = testrfRecNo + 1

    testrfempSQLRS.MoveNext
Loop

Set testrfXL = CreateObject("Excel.Application")

testrfNowDate = Now()

testrfFDFCAST = testrfXL.WorksheetFunction.Forecast.ets(Arg1:=testrfNowDate, Arg2:=testrfPointsARRAY, Arg3:=testrfDateARRAY, Arg4:=0, Arg5:=1, Arg6:=5)

Set testrfXL = Nothing

End If


Exit_testrfNBA:

Erase testrfPointsARRAY
Erase testrfDateARRAY
testrfNowDate = Empty

testrfempSQLStr = ""

If Not testrfempSQLRS Is Nothing Then
    testrfempSQLRS.Close
    Set testrfempSQLRS = Nothing
End If

Exit Sub


Err_testrfNBA:

    MsgBox "Got a sucky forecast number back.."

 generic.TestODBCErr

Resume Exit_testrfNBA

End Sub
'**********************************************

阵列填充得很好,两者大小相同 我可以毫无问题地调用其他Excel函数 无法弄清楚问题可能是什么。无论有没有“Arg =”标签我都试过这个,有了和没有最后三个可选参数,尝试用Array(myArray)包装数组,甚至将数组设置为Variant。

1 个答案:

答案 0 :(得分:0)

至少在Excel VBA中,函数名称是Forecast_ETS,而不是Forecast.ETS。