programing

자동 추가 기능 대 COM 추가 기능

closeapi 2023. 9. 18. 21:26
반응형

자동 추가 기능 대 COM 추가 기능

저는 추가 프로그래밍을 하는 초보자이며 다음 시나리오에 대한 도움이 필요합니다.

는 몇 개의 C# Excel . C# Excel 됩니다 이 됩니다 .UDF자동 할 수 시에 과 비밀번호를 . 자동 추가 기능이 로드되는 동안 사용자의 상세 정보를 입력할 수 있는 화면이 추가 기능 로드 시에 뜨도록 사용자 이름과 비밀번호를 확인하고 싶습니다.자동 추가 기능을 사용하면 어떻게 됩니까?

자동화 추가 기능을 사용하여 이벤트 처리를 일반적으로 수행할 수 있는 방법은 무엇입니까?나는 사용자가 일부 셀에서 UDF 공식을 계산하기 위해 누를 때 몇 가지 계산이 수행되기를 원합니다.

자동 추가 기능에서 이벤트 처리를 설명하는 기사가 있습니까?

일반적으로 자동화 추가 기능은 이러한 기능을 처리하도록 설계되지 않습니다.'Excel'에 대한 참조를 얻으려면 추가 기능에서 IDT Extensibility2를 구현하도록 할 수 있습니다.추가 기능이 실행 중인 Application' 개체입니다.거기서 엑셀의 모든 이벤트에 접속할 수 있습니다.Application' 클래스.그러나 자동화 추가 기능은 일반적으로 Excel 객체 모델 이벤트를 처리하도록 설계되지 않으며 사용자 정의 기능(UDF)만 지원하도록 설계되었습니다.

자동 추가 로드 시 사용자가 세부 정보를 입력할 수 있는 화면이 나타나야 하는 경우 사용자 이름과 비밀번호 검사를 수행하고 싶습니다.자동화 추가 기능을 사용하면 어떻게 됩니까?

자동 추가 기능이 처음 로드될 때는 조치를 취하지 않도록 주의해야 합니다.자동 추가 기능은 필요에 따라 필요할 때까지 로드되지 않는 것을 의미합니다.일반적으로 자동 추가 기능의 첫 번째 사용자 정의 기능(UDF)을 셀에 입력하기 시작하면 로드됩니다.문제는 사용자가 셀을 편집하는 동안 실행을 시도할 때 대부분의 프로그램 명령이 실패한다는 것입니다.따라서 처음에 추가 기능을 로드할 때 이러한 작업을 수행하려고 하면 Excel이 코드를 안전하게 실행할 수 없는 모드에 있는 동안 추가 기능이 로드될 가능성이 높습니다. (자세한 내용은 자동 추가 기능이 로드되면 Excel이 실패합니다.)

이 문제를 해결하려면 Excel 객체 모델 이벤트를 처리하도록 설계된 관리형 COM 추가 기능을 대신 사용할 수 있습니다.원하는 경우 관리 COM 추가 기능을 로드할 수도 있고, 관리 COM 추가 기능 클래스와 자동 추가 기능 클래스가 모두 동일한 어셈블리 내에 상주할 수도 있으며, 이 경우 둘은 직접 통신할 수도 있습니다.

자동화 추가 기능을 사용하여 이벤트 처리를 일반적으로 수행할 수 있는 방법은 무엇입니까?나는 사용자가 일부 셀에서 udf 공식을 계산하기 위해 F9를 누를 때 약간의 계산이 이루어지길 원합니다.

'Excel'에 가입하면 F9 키가 언제 치는지 감지할 수 있습니다.어플.SheetCalulate' 이벤트는 워크시트가 계산을 완료할 때마다 발생합니다.이 경우 계산은 F9 키만 치는 것이 아니라 어떤 이유로든 트리거될 수 있습니다.특히 F9 키를 트랩하려면 'Application'을 사용해야 합니다.OnKey' 콜백은 VBA를 통해서만 사용할 수 있습니다.그러나 프로젝트의 클래스를 COM에 노출하고 'Application'에서 다시 호출되는 VBA 추가 기능에서 클래스를 호출할 수 있습니다.On Key' 이벤트.

자동 추가 기능에 대한 기사는 다음을 참조하십시오.

관리되는 COM 추가 기능에 대한 기사는 다음을 참조하십시오.

COM 추가 기능과 자동 추가 기능에 관한 기사는 다음을 참조하십시오.

관리되는 애플리케이션을 호출하는 VBA 추가 기능의 사용에 대해 설명하는 기사는 다음을 참조하십시오.

소화해야 할 양이 많다는 것은 알지만, 이것이 당신을 발전시킬 수 있기를 바랍니다.전반적으로 사용자 인터페이스 기능을 처리하기 위해 관리형 COM 추가 기능을 권장합니다.관리 COM 애드인에 의해 저장된 데이터는 두 개의 애드인이 공통 어셈블리를 참조하도록 하거나 관리 COM 애드인 클래스와 자동 애드인 클래스를 모두 동일한 어셈블리 내에 보유하도록 함으로써 자동 애드인과 쉽게 공유할 수 있습니다.

도움이 되기를 바라며, 제가 좀 더 명확하게 설명하고 싶은 것이 있는지 물어보세요.

-- 마이크

후속 응답:

링크와 포인터 감사합니다.저는 링크를 살펴보았고 무엇을 해야 하는지에 대해 잘 알고 있습니다.:)

도움이 돼서 다행입니다.:) 많이 읽었네요, 프린트해서 다 읽어보시길 권해드립니다.당신은 상당히 진보된 일을 하려고 하고 있기 때문에, 당신이 그 주제에 대해 더 많이 알수록 당신은 더 잘 살 것입니다.

COM 기반 추가 기능을 사용하여 엑셀 이벤트를 처리하는 경우 UDF 기능을 어떻게 통합합니까?

관리되는 COM 추가 기능은 UDF 기능을 노출할 수 없습니다.당신은 그것을 위해 여전히 자동화 추가 기능이 필요할 것입니다.그러나 원하는 경우 관리되는 COM 추가 클래스와 자동 추가 클래스가 모두 동일한 어셈블리 내에 있을 수 있습니다.따라서 COM 애드인은 사용자에게 필요한 정보를 요청할 수 있으며, 이러한 값은 해당 COM 애드인 내의 UDF가 실행될 때 자동 애드인에 사용할 수 있습니다.

자동화 첨가제를 사용하는 경우와 유사하게 공식 창에 정상 기능으로 노출됩니까?

자동 추가 기능에 의해 노출되는 UDF는 자동 추가 기능의 이름과 일치하는 범주 아래에 자동으로 '기능 삽입' 마법사에 포함됩니다.그러나 설명에는 엑셀의 내장 기능에 제공되는 정보만큼 자동으로 포함되지는 않습니다.기본 기능은 일반적으로 문제가 없지만, '기능 삽입' 마법사에 대한 보다 완벽한 정보를 제공하려면 이 항목 자체가 복잡합니다.참조: Excel 2007 UDF: 기능 설명 추가 방법, 인수 도움말.

number public double getcube의 큐브를 반환하는 공식 getcube를 호출해야 한다고 가정합니다(double a). { return a * a * a; }

내 애드인이 내 UDF를 정의하는 사용자 지정 인터페이스와 IDT Extensibility2를 모두 사용하는 경우, 이러한 경우를 어떻게 처리합니까?이 경우를 예를 들어 설명해 주시겠습니까?

지금까지는 IDT Extensibility2를 구현할 필요가 없다고 생각합니다. 여기에 나와 있는 내용을 바탕으로 표준 자동화 추가 기능만 있으면 됩니다.표준 자동 추가 기능의 경우 에서 Excel에 대한 사용자 정의 함수 쓰기를 읽어야 합니다.C#에서 NET 및 쓰기 사용자 정의 Excel 워크시트 기능.관리되는 COM 추가 기능에 IDTE 확장성 2를 구현하는 방법에 대한 자세한 내용은 자동화 추가 기능의 IDTE 확장성 2 구현을 참조하십시오.

자동화 추가에 IDT Extensibility2를 구현하여 엑셀에 접근할 수 있는 방법이 있을까요?응용 프로그램 개체를 생성해야 합니까 아니면 별도의 COM 추가를 생성해야 합니까?

IDT Extensibility2는 자동 추가 기능 내에서 직접 구현할 수 있으므로 관리형 COM 추가 기능을 생성할 필요가 없습니다.IDT Extensibility2를 자동화 추가 기능에 구현하는 방법을 다시 참조하십시오.그러나 Excel 객체 모델에 대해 이벤트 처리를 사용하는 것이 목표입니다.이 작업은 자동 추가 기능을 사용하여 수행할 수 있지만, 비표준적이며 자동 추가 기능이 수행하도록 설계된 작업이 아닙니다.특히 자동 추가 기능이 처음 로드될 때 사용자 입력 정보를 제공하고자 합니다. 이는 특히 까다로운 상황일 수 있으므로 이 작업에 대해 관리형 COM 추가 기능을 사용할 것을 권장합니다.이에 대한 자세한 내용은 자동 추가 기능이 로드될 때 Excel이 실패함을 참조하십시오.

명확히 설명하자면, 관리되는 COM 추가 기능과 자동화 추가 기능은 COM을 볼 수 있게 만들어 올바르게 등록된 클래스일 뿐입니다.이 두 클래스가 동일한 어셈블리 내에 존재할 수 없는 이유는 없습니다.또한 UDF와 Excel 객체 모델 이벤트 처리를 모두 포함하는 기능을 원하는 것처럼 들리기 때문에 관리형 COM 추가 기능과 자동화 추가 기능을 모두 포함하는 단일 어셈블리를 사용하면 Excel이 기대하는 방식으로 원하는 모든 기능을 처리할 수 있습니다.

소화해야 할 부분이 많다는 것은 알지만, 여기서 제가 제안한 기사들을 잘 읽어보시면 충분히 이해가 될 것이라고 생각합니다.

마이크

언급URL : https://stackoverflow.com/questions/1998824/automation-add-in-vs-com-add-in

반응형