Передача параметра при вызове макроса Excel из Delphi
С Рождеством, уважаемые господа!
Вот пример вызова из Delphi6 макроса VBA Excel :
//******************
Wksheet: TExcelWorksheet;
Wkbook: TExcelWorkbook;
XlApp: TExcelApplication;
.......
Var
SomeStr : String;
procedure MyProc;
Var
NewValue : String;
begin
SomeStr := 'Hello!';
XlApp.Run('VBA_Sub',SomeStr);
NewValue := SomeStr;
end;
//***********************
Имеется макрос VBA_Sub, откуда надо вернуть в MyProc значение SomeStr = 'By!'
'**************************
Sub VBA_Sub(ByRef Vba_Param)
NewStr = Vba_Param
' ............. Здесь NewStr = "Hello!" (!!!)
Vba_Param = "By!"
End Sub
'***************************
Параметр передается по ссылке, но только в одну сторону. Почему SomeStr возвращается равным 'Hello!' вместо ожидаемого 'By!'?! (
Вызываю тот же VBA_Sub из макроса Makros1:
'***********************
Sub Makros1()
Dim ActualParam as String
ActualParam = "Hello!"
Call VBA_Sub(ActualParam)
NewStr = ActualParam ' ........NewStr действительно равна "By!".
End Sub
************************
Что здесь неправильно? Как вернуть новое значение параметра?