VBA(Excel)のコードをC++にコンバートするには?


Jupiter  2005-10-14 19:49:26  No: 59259

ExcelでVBAを使っていますが、処理速度が遅いためC++にコンバートし、DLLを呼び出すような形にしたいと思っています。

しかしながら、C++に自力でコンバートする知識が無いため、そうした作業を代行している業者は無いものかと考えたのですが、そうした業界にも疎いため、何か参考になる情報があればと質問させていただいた次第です。


Blue  2005-10-14 19:54:23  No: 59260

> ExcelでVBAを使っていますが、処理速度が遅いためC++にコンバートし、DLLを呼び出すような形にしたいと思っています。
DLLは結局どこから呼び出すのでしょうか?(VBA?)


Jupiter  2005-10-14 20:12:13  No: 59261

> DLLは結局どこから呼び出すのでしょうか?(VBA?)

VBAからDLLに数字を渡し、DLLから返った数字をVBAで使う形にしたい考えております。


Blue  2005-10-14 20:20:52  No: 59262

> DLLに数字を渡し、DLLから返った数字をVBAで使う形
具体的に入力がなにで出力がなにになるのでしょうか?
配列や文字列を使わなければ、VCでDLLをつくるのは簡単です。
# 関数内で、Excelのセルを参照するみたな操作があるとムリ。

ちなみに、Jupiterさんの言語レベルはどれくらいでしょうか?
VBA、Cともに解答してください。

     1.なにもわからない
     2.入門書を一通り読んだレベル
     3.WinAPIを使ってコードが書ける
     4.自分でやりたいことができる
     5.エキスパート


Jupiter  2005-10-15 00:25:37  No: 59263

一文で言えば、現在をt0とした時、確率モデルに従い、t1、t2、t3・・時点の価格(例:為替レート)シミュレーションを行い、その価格レベルに応じたペイオフを計算したいと考えています。

  例えば、t0時点の価格をs0とおき、所定の式(Excelの関数を利用)にもとづきt1時点の価格S1を導きます。次にt2時点の価格S2を上式で導いたS1を使い、各変数と新たな乱数によりシミュレートします。同様にt3時点・・tN時点まで同様にシミュレートします。t0からtNまでシミュレートされた価格を経路1とし、その経路にしたがったペイオフを計算していきます。この経路を1万回シミュレーションしてそのペイオフの平均を導く作業を行いたいのですがスプレッドシートで計算すると速度が非常に遅いのです。

  より具体的には、計算に必要な入力変数は、期間ごとの金利とボラティリティ、更に各時点の乱数です。上記変数ははスプレッドシートからの入力とし、「標準正規分布乱数の生成、各時点のシミュレーション、それに従ったペイオフ計算」をDLL内で処理し、ペイオフの平均値をスプレッドシート上に返したいと考えています。

 ちなみに、VBAのレベルは2と3の間(2に近い)、Cのレベルは1と2の間という状態です。


Blue  2005-10-15 00:40:49  No: 59264

>   より具体的には、計算に必要な入力変数は、期間ごとの金利とボラティリティ、更に各時点の乱数です。
>  上記変数ははスプレッドシートからの入力とし、「標準正規分布乱数の生成、各時点のシミュレーション、
> それに従ったペイオフ計算」をDLL内で処理し、ペイオフの平均値をスプレッドシート上に返したいと考え
> ています。
ということは、入力は複数あり、出力は1つでよろしいのですね。
変数の型はdouble型がいいのかなぁ。。

> 「標準正規分布乱数の生成、各時点のシミュレーション、それに従ったペイオフ計算」
については、私は詳しくないのですが、
C言語で、値を返す関数ができれば、それを応用するだけだと思います。
DLLにするにはVCでやれば簡単ですし。

# 具体的なExcel上の計算を見せても理解できそうにない、、、


RAPT  2005-10-15 10:53:58  No: 59265

数学的なことはよく分かりませんが、固定数の入力数値があって、
固定(ここではハードコーディングの意)の計算式で、
その計算結果(値)を返す、っていうなら、さほど難しくないと思います。

double add(double inValue1, double inValue2)
{
    double outValue = inValue1 + inValue2;
    return outValue;
}

のように表現可能なら、ってな意味合いです。


Jupiter  2005-10-16 04:00:56  No: 59266

なんとなくですが、数字を入れて返すという範囲であれば、
もう少し勉強すれば出来そうな気も・・Visual Sudioも買
ったことだし、検討してみます。

こうした単純で限定したこと(C++で計算させる、エクセル
VBAとの連携等)のお勧め本とかありますでしょうか?


Blue  2005-10-16 06:02:42  No: 59267

> こうした単純で限定したこと(C++で計算させる、エクセル
> VBAとの連携等)のお勧め本とかありますでしょうか?
VBAの連携はいまのあなたには覚えなくていい知識だと思います。
C++でどのように統計的な計算をするかだけだと思いますけど。
# VBAとの連携とはどのように配列やメモリ領域を管理するかとかそういうことですので。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加