ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

VBAからのDLL呼び出し

2006-06-17 03:31:15 | PG(Excel)

ExcelVBAからWin32APIを呼び出す方法をメモ。
VBからDLL(Win32 API)を呼び出せるのは(やったことは無いけれど)当然だと思っていたけれど、VBAからも出来るとは思ってなかったなー。

C言語で作った関数の引数に対しVBAから値をどうやって渡せばいいか試行錯誤してみた。
intはByValのIntegerで渡せばいいし、int*はByRefのIntegerで渡せばいいのは、けっこう素直に出来てる。

でもchar[]はVBAのStringとは明らかに違うだろうし、どうするんだろう?と思って。
ポインターを渡したいところではByValのLongにすればいいことは分かった(試したのはNULL、すなわち0を渡すことだけど)ので、Stringのアドレスが取れればいいと考えた。
まず試したのはVB.NETにも有るAddressOf。だけどこれはメソッド専用らしい。
んでMSXでは変数のアドレスを取るのにVARPTRがあったけど、まさかVBAには無いだろうなぁと思いつつ試してみたら、コンパイルが通るし!!(爆)
(これは早速プログラミング言語比較に追加~!)

ちょっとネットで調べてみると、StrPtrやObjPtrなんてものもあるらしい。
でもStrPtrはまさに文字列用っぽいのに、何故か1文字しか渡せなかった。

結局結論としては、StringのByValで素直に渡せたみたいだけど…こんなのでいいのかなー? C言語の文字列と同じとは思えないんだけどなー。

まぁ僕が本当にやりたかった事はバイト配列を渡すことだから、文字列はどうでもいいんだけど(爆)



最新の画像もっと見る

コメントを投稿