我有一个测试的dll函数,它会读取一个字符串并将其显示出来:
int _stdcall test(LPSTR myString) {
MessageBoxA(NULL, (LPCSTR)myString, "test", MB_OK);
return 0;}
Excel VBA声明为:
Declare Function test Lib "test.dll" (ByVal text As String) As Long
有一个子程序调用该函数。它读取一个值为“abcde”的Excel单元格,并能够显示正确的结果。该子程序代码如下:
sub testCode()
test (cells(1,1).value)
end sub
然而,当使用Excel公式
=test(A1)
调用dll函数时,消息框只会显示字符串的第一个字符“a”。我花了整个周末阅读BSTR等内容,仍然不能解决这个问题。到底是怎么回事?
VB pass
。将其替换为Excel pass
可能会使答案变得正确。 - GSerg