エクセルの数値をVB経由でCで作られたDLLに計算させる方法

解決


quake  2006-02-04 05:18:31  No: 130091

初めての質問になります。
よろしくお願いいたします。

現在、エクセルのA1〜A5のセルに、適当な数値を入れて、
それをVBを経由させて、C言語で作られたDLLファイルで計算させ、
その結果をエクセルの別のセル(B1等)に表示させるという事をやりたいのですが、うまくいきません。

現時点では、答えを表示させたいエクセルのセル(B1)に、

=goukei(B10:B14)

という風に書き、VBA側には、

Dim youso(4) As Double      ----------------ここで、yousoという配列の箱
                                                を用意し

Function goukei(hani) As Double     
    Dim ue, shita, retu, i, j, yousosuu As Long
    
    goukei = 0
    ue = hani.Row

    retu = hani.Column
    yousosuu = hani.Rows.Count
    
    For j = 0 To yousosuu - 1
        youso(j) = Sheets(hani.Parent.Name).Cells(ue + j, retu)
    Next j

                              -------ここまでで、セルA1〜A5に入っていた
                                      数値をyouso(0)〜youso(4)の中に
                                      入れる事ができました。
                                      ちゃんとVB上で入っている事を確かめ
                                      ました。

    goukei = ●●●●
   
End Function

  問題はここからなのですが、現時点では●●●●の所に、

  「cdll.dll」にyouso(0)〜youso(4)までの値を送信して結果を返せ

  という命令を書きたいのですが、そのような命令は存在するのでしょうか・・・

  もし無ければ、どのようにして「cdll.dll」にyouso内のデータを送り、

  その結果を受け取れるようにすれば良いのでしょうか。

  ちなみに、DLL側のコンパイルする前のプログラムは、C言語で書いていて、

******************************************************
  #include "cdll.h"

DLLIMPORT double dll_double_square (double *d,double *a,double *b,double *c,double *w)
{
    return *d+*a+*b+*c+*w;
}
********************************************************

  このようになっています。

  そもそも、こちらのDLLファイルのプログラムが間違っているかも知れないので、目を通していただけると幸いです。

  以前、ここのBBSに同じような質問が寄せられ、それも参考にしましたが、わからず、ここなら解決できるかもと思い、書かせて頂きました。

  どうかよろしくお願いいたします。


あっきー  2006-02-04 06:44:14  No: 130092

一気に作り上げようとせず、一つ一つ手法を理解していく必要がありそうですね。
まずはVBで使えるDLLの使い方から。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=VB+DLL&num=50


Blue  2006-02-04 10:13:37  No: 130093

マルチ
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=34434;id=excel
http://www.gizshare.com/vbtomo/boards/vbqanda.php?do=spread&num=12386


Blue  2006-02-04 10:18:05  No: 130094

> ここなら解決できるかもと
マジで腹立つ罠。。。

あっちのレスを削除したほうがよいのかなぁ?


quake  2006-02-04 11:25:48  No: 130095

>あっきーさん

ありがとうございます。
勉強してみます…

>Blue

あの…こういう質問掲示板にはマルチで投稿してはいけないんですか?
私は掲示板によって来る人が違うと思っていたので、
いろいろな方の意見を集めようと思って投稿したのですが…。

当然、教えていただいた方へのお礼のコメントも必ず書きますし、
最初の二つの掲示板への書き込みはコピペで、
それを指摘されたので、せめてまた文章を書き直そうと、
プログラム以外は新しく書いて質問したのですが、
これって質問掲示板ではご法度な事だったのでしょうか…。

Blueさんが様々なところで、分からない人へ助け舟を出されている事は今知りました。

何度も同じ質問を見て、悪い気にさせたのは素直に謝ります。


quake  2006-02-04 11:29:03  No: 130096

あ、あと

> ここなら解決できるかもと

この発言は大変失礼でした。
ただ、

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=34434;id=excel

ここでBlueさんに答えて頂いた時に、
なんかちょっと怒っておられるようだったので、
もうあそこでは余り質問しないでおこうと思って、つい書いてしまいました。

そもそも、同じような事をしょーこりもなく聞く私に対して怒っておられるので、仕方ないんですが…


quake  2006-02-04 11:58:04  No: 130097

あと…

二個上のログで、

>Blue

と、「さん」をつけるのを忘れてしまいました。
すいません…そういうつもりじゃなかったので、一応…
失礼します。


quake  2006-02-05 00:26:15  No: 130098

blueさんのおかげで解決いたしました。
本当にありがとうございます。

このプログラム以外にも、いろいろ反省する事がありました。
本当にいろいろとお世話になりました。
失礼します。


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

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






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