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': マクロ 'Yield' を実行できません。このブックでマクロを使用できないか、すべてのマクロが無効になっている可能性があります。
次のコードを使用して、分析ツールパックを具体的に追加および登録するなど、いくつかのことを試しました。
objExcel.RegisterXLL "C:\Program Files (x86)\Microsoft Office\Office14\Library\Analysis\ATPVBAEN.XLA"
しかし、同じエラーが発生します。
現時点では、マクロを有効にしたワークブックを作成する必要があるか、または慣れていない Win7 / Office 2010 のセキュリティ設定に問題があるのではないかと考えています。
現時点で考えられる唯一の解決策は、Yield 関数を公開する Excel インスタンスをラップする COM 相互運用 .net アセンブリを作成することです。ただし、COM相互運用ルートに進むには管理者権限を取得する必要があり、展開するには、エンドユーザーのマシンにdllを登録する必要があるため、別のソリューションを好むでしょう。 MS Access と同じ .net のエラー。
最後に、F# アセンブリで多数の Excel 財務関数を再作成する .net プロジェクトがあります。残念ながら、Yield 関数は再実装された関数の 1 つではありません。
これについて何かアドバイスをいただければ幸いです。
乾杯、
ジェイミー