※ ChatGPTを利用し、要約された質問です(原文:VB6からEXCELマクロの終了を判断する方法を教えてください。)
VB6からEXCELマクロの終了を判断する方法
このQ&Aのポイント
VB6からEXCELマクロの終了を判断する方法を教えてください。
VB6とEXCEL(VBAも含む)を使って特定の処理を行うソフトを作成中ですが、EXCELマクロの終了判断に困っています。
マクロの実行が終わった後にVB6でデータを回収するために、EXCELマクロの終了をVB6で判断する方法を教えてください。
VB6からEXCELマクロの終了を判断する方法を教えてください。
VB6からEXCELマクロの終了を判断する方法を教えてください。
VB6とEXCEL(VBAも含む)を使って次のような流れの処理を行うソフトを作っています。
そこでどうしてもEXCELマクロの終了をVB6から判断する必要があり、方法を教えて頂けないでしょうか。
1)VB6でEXCELファイルを起動
2)VB6からセルA1に10,A2に20を代入
3)VB6からEXCELファイル内のマクロをコール
4)マクロはA1+A2の計算を行いA3に代入(30)
5)VB6からA3の値を読み込む
(実際にはマクロは複雑な処理をします。)
1)~5)の処理を5000回程度行います。
VB6から送られるデータは毎回変わり、EXCELとマクロで計算させたデータを回収してテキストファイルに書き出します。
一通りのプログラムは完成したのですが、計算したデータを見ると10+20が1.99999とか15.51414とかおかしい結果になっています。
もしかしたらマクロの実行が終わっていない段階でVB6がデータを拾ってしまっている??と考え、マクロの終了をVB6で判断してからデータを回収するようにしたいと思っています。
何か方法はないでしょうか。(または他に間違っているところがあるのでしょうか。)
長文ですみません。よろしくご教示ねがいます。
お礼
ご返答ありがとうございます。 いろいろ試して見ましたが、各計算の間に200msec程度のWAITを かけて待ってみても結果は変わらず、まったく同じ誤差が再現しました。 ということはやはり浮動小数点誤差と考えるべきでしょうか。 (当たり前ですかね・・・) 桁を決めて10倍・100倍・1000倍というのもエクセルソルバーを作ると いう観点では、大きい数値から小さい数字まで何が来るか判らないため、 桁を固定にすると不都合が生じそうです。ほんとにオールマイティに 作るというのは難しいです。 最適化については、コードは入手しておらず「これから」という感じです。 仕事でI-SIGHTなどの最適化ソフトを使用しておりました。 その関係でモンテカルロによる大域探索や遺伝的アルゴリズムなどの手法が 判りますのでなんとか自分でコード化できたらと思っています。 リンクを貼っていただいたSolverいいですね。どうしても有料というところで つまづいてしますが(T_T) 長々と書いてしまいましたが、結論はやはり浮動小数点誤差のようですね。 変数型をうまく整理してコーティングするのはどうも苦手でして・・・ これを期にもう少ししっかり理解して解決策を探って見たいと思います。 ありがとうございました。