1

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 つではありません。

これについて何かアドバイスをいただければ幸いです。

乾杯、

ジェイミー

4

1 に答える 1

1

誰かが同じ問題を抱えている場合、私が解決した (回避した) 方法は、収量パラメーターを含むセルの束を参照して、セルに収量式がある外部ワークブックを使用することでした。次に、Access vba 関数を使用してパラメーターを置き換え、ワークシートに数式を強制的に再計算させ、それを Access データベースに返します。

于 2013-11-18T09:59:30.243 に答える