나는 RtdServer 기반 자동화 추가 기능을 가지고 있습니다 :
How do I create a real-time Excel automation add-in in C# using RtdServer?. RTM 함수를 래핑하는 Excel 자동화 추가 기능을 C#으로 어떻게 만듭니 까?
VBA를 래퍼를 작성
은 간단하다 :Function RtdWrapper(start)
RtdWrapper = Excel.Application.WorksheetFunction.RTD("StackOverflow.RtdServer.ProgId", "", start)
End Function
이 작동합니다. 나는 다음과 같은 C#을 래퍼를 만들기 위해 시도 : 나는 입력하면
[ClassInterface(ClassInterfaceType.AutoDual)]
public class RtdWrappers
{
private readonly Microsoft.Office.Interop.Excel.Application _application = new Application();
public object Countdown(object startingCount)
{
var start = Convert.ToInt32(startingCount.ToString());
return _application.WorksheetFunction.RTD("StackOverflow.RtdServer.ProgId", string.Empty, start);
}
[ComRegisterFunctionAttribute]
public static void RegisterFunction(Type t)
{
Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("CLSID\\{" + t.GUID.ToString().ToUpper() + "}\\Programmable");
}
[ComUnregisterFunctionAttribute]
public static void UnregisterFunction(Type t)
{
Microsoft.Win32.Registry.ClassesRoot.DeleteSubKey("CLSID\\{" + t.GUID.ToString().ToUpper() + "}\\Programmable");
}
}
은 "= 카운트 다운 (150)는"Excel에서 셀로 업데이트 ConnectData에 의해 그러나 결코 반환 (150)의 초기 값을 보여줍니다. 등록해야하는 콜백이 있습니까? Application 개체를 올바르게 인스턴스화합니까? 내가 뭘 놓치고 있니?
감사합니다,
프랭크 실제로
나는 이것을 조사 할 것이다. .. 팁을위한 감사합니다! – Frank
아직 체크하지 않았으며 IDTExtensibility2가 자동화에 사용되지 않는다고 제안하는 기사 (http://blogs.officezealot.com/whitechapel/archive/2005/04/10/4514.asp)가 있습니다. 추가 기능. 그렇다면 Excel 추가 기능에 대한 Excel-DNA와 같은 somethiong를 사용하는 것이 .NET에서이 작업을 수행하는 유일한 방법 일 수 있습니다. – Govert
하지만이 Stackoverflow 대답을 http://stackoverflow.com/questions/1998824/help-with-excel-automation-addin, 마이크 강조 꽤 격렬하게 IDTExtensibility2 응용 프로그램 개체를 잡아 자동화 추가 기능에 구현할 수 있습니다 . – Govert