[英]How to Correctly Specify ATP 2.0 XIRR Function Call in Access-to-Excel Automation
如果有人可以提供幫助,我需要在Access 2003 to Excel 2003 VBA問題中正確定義一些調用參數。 我正在嘗試從Access使用ATP 2.0類型庫中的XIRR函數。 我在Access項目中引用了ATP 2.0類型庫。 這是我在表格后面使用的相關VBA代碼(帶有一些偽代碼):
Dim aCF as Variant 'this variant will hold the cash flows
Dim aDates as Variant 'this variant will hold the dates
Dim oATP2 As ATP2.OCATP
Set oATP2 = New ATP2.OCATP 'used in the Form_Open event to instantiate the object
在此模型中,我始終有五種現金流量可以使用:前一季度的流出值,三個月的凈收款額和當前的季度終值。 (如果涉及更多元素,我肯定會使用循環結構。)在用戶定義的子例程中,我重新定義變量,加載數組並調用XIRR:
GetAssetReturn_X()
REDIM aDates(4) 'base 0
aDates(0) = DateSerial(Year(wDBBaseDate), Month(wDBBaseDate) - 2, 1) - 1 'e.g. 3-31- 2010
aDates(1) = DateSerial(Year(wDBBaseDate), Month(wDBBaseDate) - 1, 1) - 1 'e.g. 4-30-2010
aDates(2) = DateSerial(Year(wDBBaseDate), Month(wDBBaseDate), 1) - 1 'e.g. 5-31-2010
aDates(3) = wDBBaseDate 'e.g. 6-30-2010
aDates(4) = wDBBaseDate 'e.g. 6-30-2010
REDIM aCF(4) 'base 0
'from a recordset...
aCF(0) = -rs.Fields(2) 'pprd cash flow
aCF(1) = rs.Fields(3) 'net collection cprd - 2
aCF(2) = rs.Fields(4) 'net collection cprd - 1
aCF(3) = rs.Fields(5) 'net collection cprd
aCF(4) = rs.Fields(6) 'cprd cash flow
GetAssetReturn_X = oATP2.XIRR(aCF, aDates)
End Sub
自動檢測功能有效; 當我鍵入“ oATP2”時。 我得到一個可用功能的列表。 因此,我認為對象實際上是正確實例化的。 也許不吧。 但是,每當我運行代碼時,都會收到臭名昭著的運行時錯誤“ 91:未設置對象變量或With塊變量”。 為了我的一生,我在這里錯過了結構性問題。 因此,我目前假設沒有正確描述調用參數。 我在某處讀到這些必須是變體。 也許這些需要是數組或范圍對象。 謝謝。
我在您的代碼中添加了Set oATP2 = New ATP2.OCATP
但收到429錯誤。 您最終可以使用ATP2庫嗎? 作為替代解決方案,此代碼在MS訪問中運行,但速度太慢:
Function tasa1(A, B)
Set AnalysisApp = CreateObject("Excel.Application")
Set AnalysisWkb = AnalysisApp.Workbooks.Open("C:\Archivos de programa\Microsoft Office\OFFICE11\Macros\Análisis\atpvbaen.xla")
AnalysisWkb.RunAutoMacros xlAutoOpen
tasa1 = AnalysisApp.Application.Run(AnalysisWkb.Name & "!XIRR", A, B, 0.1) * 100
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.