アプリ版:「スタンプのみでお礼する」機能のリリースについて

C(C++)初心者です。

非常に大量なデータ(数万件)を数万回のループ計算をするアルゴリズムがあり、当初VBAで行っていましたが、当然遅いので当該モジュールをC++でdllとし、VBAから呼び出しています。呼び出し自体には問題がないのですが、dllで計算中にエクセル画面に計算データ件数を表示したいと思っています。

dllでも計算に数時間かかり、またしばしば何らかのエラーでエクセルがフリーズ/強制終了してしまうので、せめて何件目でエラーが発生したかわかればと思っています。(ちなみにメモリリークではないことは確認しました)

なお、そもそも計算ロジックを効率化して速くできないのか、と言いたくなりますが、それは無理です。
また、C++のエラー処理にはあまり習熟していないので、時間があるときにコード改善してエラーログを出すようにしたいとはおもっています。

例えば処理件数が1万件あるとして、現在計算中の件数をエクセル上に表示できればと思います。参考になるウェブサイトやコードをご教示いただければと思います。宜しくお願いします。

A 回答 (1件)

こんにちは。


よくわからないんですけど、今何件目を処理してるのかを知らせられれば良いんですよね。
dll側から、vba側のコールバック関数を呼び出すなんてのではダメでしょうか?
私もやったことはないので、詳しくご説明はできないのですが、ちょっとした値なら戻すことができるんじゃないかと思います。
ご参考までに。

参考URL:http://www5b.biglobe.ne.jp/~kouta_y/news/yomo/06 …

この回答への補足

コールバック関数により、エクセルのstatusbarに進行状況を表示させることができました。非常に有用です、どうもご教示ありがとうございました。

補足日時:2006/04/08 04:53
    • good
    • 0
この回答へのお礼

どうもありがとうございます。addressof関数等、必要な知識について勉強してみます。もし他にも手軽なサンプルコードがあれば教えていただけると大変助かります。

お礼日時:2006/04/08 03:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!