2015-04-17 3 views
0

У меня есть функция DLL, которая имеет два строковых параметра и два параметра int. Функция возвращает строку. Когда я вызываю функцию непосредственно из excel, это нормально, но когда я вызываю функцию из VBA, в DLL-функцию передается строковые параметры, то есть не соответствует с оригинальными (бессмысленными символами). И функция возвратная строка, ведьма есть каждые секунды char "".Excel VBA - строка param pass от excel, но не от VBA

Моя функция длл выглядит следующим образом:

BSTR __stdcall getPattern(int sex, int pad, BSTR * a, BSTR * b){ 
    ... 
} 

функцию Declare в VBA:

Declare Function GetPattern _ 
Lib "myPathToFunction" Alias "GetPattern" (ByVal poh As Integer, ByVal pad As Integer, ByRef a As String, ByRef b As String) As String 

В первенствует я вызываю функцию, как это: (И это нормально)

=GetPattern(I5;C1;A1;B1) 

И от функции вызова VBA, как это: (и он возвращает только первый символ строки)

result = GetPattern(Range("I5").Value, Range("C1").Value, Cells(i, 1).Value, Cells(i, 2).Value) 

ответ

0

Это может быть проблема с преобразованием строк VB в ANSI на вызовы C. Вам может потребоваться явно передать указатель на строку:

Dim param_a As String 
Dim param_b As String 

param_a = Cells(i, 1).Value 
param_b = Cells(i, 2).Value 
result = GetPattern(Range("I5").Value, Range("C1").Value, _ 
        StrPtr(param_a), StrPtr(param_b)) 
+0

Получите тот же результат. –

+0

Является ли возвращаемая строка unicode случайно? – Comintern

Смежные вопросы