2011年4月7日木曜日

DLL から Excel vba へ文字列を返す

'** Excel vba の定義 **
Function StrTest() As String
Dim wMsg As String
Dim wLen As Long

wMsg = Space(256) '作業領域を確保する
wLen = SkStringTest(wMsg) '文字列を受け取る
StrTest = Left(wMsg, wLen) '有効な文字だけを取り出して返す
End Function


{** delphi DLL の定義 **}
function SkStringTest(aStr: PAnsiChar): integer; stdcall;
// vba の String は PAnsiChar で受ける
var
wAnsiStr: AnsiString;
begin
wAnsiStr := 'Hello, Excel!'; //定数の場合は実際はコンパイラが変換してくれるが。
StrCopy(aStr, PAnsiChar(wAnsiStr));
Result := StrLen(aStr);
end;

0 件のコメント: