난 역사적인 이유로, 인수, 다수 소요하는 기능에서 내보낼 XLL (다소 복잡한 C++ 프로젝트), 그리고 정확하게 20. 함수 마법사에 등록 할 수없는 xll 추가 기능에서 함수를 호출하려면 어떻게합니까?
이
은 마법 번호 : 대부분의보다 적은 가지고 있지만 분명히 Excel 2003에서 마이크로 소프트 오피스 엑셀 2003 (30 개) 인수 ("의 최대 개수가 어떤 기능을 수행 할 수있는 인수의 최대 수는 30입니다 이. "). 그러나 기능 마} 사에서 over 20 the function cannot be registered.짐작할 수 있듯이 3을 더 입력해야합니다. 인수가 필요합니다. 좋습니다. 따라서 인자 카운트는 23까지 올라갑니다 (적어도이 함수는 "인간 소비"를위한 것이 아니라 항상 VBA 래퍼에 의해 호출됩니다). VC++ 디버거를 엑셀 프로세스에 연결하여
, 나는 등록시 xlretInvCount의 약자 오류 코드 4를 얻을.
내가 쉼표로 구분 된 인수 이름의 문자열이 shorter than 255 characters 있는지 만들었습니다. Btw, xlw 4 (이전 버전, 알고 있습니다)를 사용하고 있습니다. 한도가 30 인 경우
그래서,
Application.Run("function name", ..... very long list of arguments)
를 통해 내 함수를 호출 할 수 있기를 기대하지만, 마법사를 사용하지. 문제는 VBA가 함수가 등록되어 있지 않다는 것을 알려줍니다.
그래서 20 개 이상의 인수와 30 개 미만의 인수를 사용하는 함수는 어떻게 올바르게 사용합니까?
NB : 명백한 진술을 삼가하십시오. 나는 문제의 진정한 요점이 어디 있는지 알고있다. 리팩토링은 현재 불가능합니다.
볼 수 있지만, 자주 하나의 인수로 범위를 (인수를 포함하는) 전달하여 인수의 수를 줄일 수 있습니다. 악의적 인, 더러운 대안 : 인수를 문자열로 전달하고 문자열을 구문 분석합니다. 특히 VBA 래퍼를 통해 호출하기 때문에 그렇습니다. –
이것은 내가 생각했던 대체품이지만, 왜 내가 "비 구속력"한도에 불과해야 하는지를 분명히 극복하지 못하는 이유가 궁금합니다. – Francesco