初めての質問になります。
よろしくお願いいたします。
現在、エクセルの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に同じような質問が寄せられ、それも参考にしましたが、わからず、ここなら解決できるかもと思い、書かせて頂きました。
どうかよろしくお願いいたします。
一気に作り上げようとせず、一つ一つ手法を理解していく必要がありそうですね。
まずはVBで使えるDLLの使い方から。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=VB+DLL&num=50
マルチ
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
あの…こういう質問掲示板にはマルチで投稿してはいけないんですか?
私は掲示板によって来る人が違うと思っていたので、
いろいろな方の意見を集めようと思って投稿したのですが…。
当然、教えていただいた方へのお礼のコメントも必ず書きますし、
最初の二つの掲示板への書き込みはコピペで、
それを指摘されたので、せめてまた文章を書き直そうと、
プログラム以外は新しく書いて質問したのですが、
これって質問掲示板ではご法度な事だったのでしょうか…。
Blueさんが様々なところで、分からない人へ助け舟を出されている事は今知りました。
何度も同じ質問を見て、悪い気にさせたのは素直に謝ります。
あ、あと
> ここなら解決できるかもと
この発言は大変失礼でした。
ただ、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=34434;id=excel
ここでBlueさんに答えて頂いた時に、
なんかちょっと怒っておられるようだったので、
もうあそこでは余り質問しないでおこうと思って、つい書いてしまいました。
そもそも、同じような事をしょーこりもなく聞く私に対して怒っておられるので、仕方ないんですが…
あと…
二個上のログで、
>Blue
と、「さん」をつけるのを忘れてしまいました。
すいません…そういうつもりじゃなかったので、一応…
失礼します。
blueさんのおかげで解決いたしました。
本当にありがとうございます。
このプログラム以外にも、いろいろ反省する事がありました。
本当にいろいろとお世話になりました。
失礼します。
ツイート | ![]() |