簡體   English   中英

如何在Excel自動化訪問中正確指定ATP 2.0 XIRR函數調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM