• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++で作成したDLLにVBAから配列渡し)

C++で作成したDLLにVBAから配列渡し

このQ&Aのポイント
  • VC++初心者です。よろしくお願いします。
  • VC++2008ExpressでWindowsアプリケーションのDLLを作成してみました。Excel2007VBAにて、そのDLLを呼び出して関数を使用したいのですが、VBAの配列を参照渡しで渡すと、配列のデータをうまく渡せません。
  • VC++で作成したDLLをVBAで呼び出して配列を渡す方法について教えてください。配列のデータが変な数字に化けてしまうという問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

CPPファイルでコンパイルしているなら extern ”C"でCPPの自動命名を抑制したほうがいいと思います VBAのIntegerは16ビットなので C++側の受けは shortにしないといけません VBA側をC++に合わせるなら 変数を Longにします またVBA側のDeclare宣言を ' C++側が intなら Private Declare Function Add Lib "Test_DLL.dll" ( a as Long ) as Long ' C++側が shortなら Private Declare Function Add Lib "Test_DLL.dll" ( a as Integer ) as Integer といった具合にします 呼び出し方法は MsgBox( Add( a(0) ) ) といった具合に 先頭要素を引数に渡しましょう

t-osk1109
質問者

お礼

ありがとうございます。 Declare宣言と先頭要素を渡すという点がおかしかったんですね。 うまくいきました。 相当、悩んでおりました。 ありがとうございました。

関連するQ&A