2010-06-04 5 views
0

Excel 용 C++ .xll addIn이 있습니다. 다음 테스트 워크 시트 함수는로드 된 xll과 함께 작동합니다.사용자 지정 xll 함수에 ExecuteExcel4Macro

LPXLOPER __stdcall Test() 
{ 
    return &xlstring("Yayage",true) 
} 

예 : = Test()는 워크 시트에서 "Yayage"를 반환합니다. xlstring은 문자열을 Excel 문자열로 변환하고 excel 또는 xll이 해당 메모리를 해제할지 여부를 지정하는 내 자신의 사용자 지정 메서드입니다.

VBA를 사용하여 2003 및 이전 버전의 'GUI 도우미'AddIn과 2007 년 이후의 C# Excel 2007 AddIn 프로젝트를 제작할 계획입니다. 이 두 버전은 웹 서비스와 통신하는 버전 독립적 인 .xll로 작동합니다. , .RUN하는 경우를 제외하고 ( Application.ExecuteExcel4Macro (문자열) Application.Evaluate (문자열) Application.Run (...)

이 잘 작동 :

모두 C# 및 VBA는 다음과 엑셀 기능을 가지고 있습니다 C#에서는 32 개의 매개 변수를 사용하고자 함) 문자열을 반환하는 일반 워크 시트 함수 (예 : VBA에서 :

MsgBox Application.<Any above method>("=Trim("" Billy Bob  Fred "")") 

그러나 "빌리 밥 프레드"를 포함하는 메시지 상자를 생성, 나는 이것이 내 사용자 정의 워크 시트 함수의 작업을 얻을 수 없습니다. 워크 시트 함수 대신 명령으로 등록하는 것도 작동하지 않습니다.

필자는 = /()가있는 경우와없는 경우의 다양한 스타일의 함수 이름을 시도했으며, 내가 생각할 수있는 그 밖의 모든 것에 대해서도 시도해 보았습니다.

아무도 도와 줄 수 있습니까?

+0

그래서'Run ("= Test()")'을 시도하고 계십니까? 그것에 대해 효과가없는 것은 무엇입니까? 틀린 문자열? 빈 문자열? 에러 메시지? – Tim

답변

1

xlstring은 임시 객체의 주소를 반환합니까?

+0

클라이언트가 이제 그것을 사용하기 때문에 결국이 하나를 정렬해야합니다. 나는 내가 무엇에 관해 있었는지에 관해 기억할조차 없다! –

관련 문제