无法从MS Access运行Excel函数

我们正在将MS Access 2003应用程序从Office 2003迁移到Office 2010(和WinXP => Win7),并遇到了一个问题,试图从MS Access运行Excel Yield函数 。 当前执行此操作的代码(可在XP / Office 2003上运行)如下所示:

Dim objExcel As Excel.Application Set objExcel = New Excel.Application objExcel.RegisterXLL objExcel.Application.LibraryPath & "\ANALYSIS\ANALYS32.XLL" dblYield = objExcel.Run("Yield", dteTDate, rstSec.Fields(2), dblRate / 100, dblPricePaid, rstSec.Fields(7), rstSec.Fields(4), rstSec.Fields(6)) 

最后一行代码错误,并给出以下错误:

运行时错误“1004”:无法运行macros“收益率”。 macros可能不在此工作簿中可用或所有macros可能被禁用。

我已经尝试了一些东西,包括使用以下代码专门添加和注册Analysis Toolpack:

 objExcel.RegisterXLL "C:\Program Files (x86)\Microsoft Office\Office14\Library\Analysis\ATPVBAEN.XLA" 

但是我得到同样的错误。

我正在考虑的问题可能是需要创build一个macros启用工作簿,或者这可能是一些我不熟悉的Win7 / Office 2010安全设置。

我现在想出的唯一可能的解决scheme是创build一个COM interop .net程序集,它包装一个暴露Yield函数的Excel实例。 不过,我更喜欢一个不同的解决scheme,因为去COM互操作路线,我必须得到pipe理员权限,然后部署我必须在最终用户的机器上注册DLL,另外我很可能会遇到.net中的错误与MS Access中相同。

最后还有一个.net项目可以在F#程序集中重新创build许多Excel财务函数 。 不幸的是,Yield函数不是重新实现的函数之一。

我非常感谢在这方面的任何build议,

干杯,

杰米

如果任何人有同样的问题,我解决(解决)的方式是使用一个外部工作簿,其中我已经在单元格中的产量公式,引用一堆包含yield参数的单元格。 然后,我通过我的Access vba函数replace参数,强制工作表重新计算公式并将其返回到我的Access数据库。