Я создал формулу Excel с помощью справки по этой ссылке: Канонический: Как вызывать методы .NET из Excel VBA
Работает нормально, но теперь у меня есть требованиеотправка объекта диапазона Excel в эту формулу в C # и работа с этим диапазоном.Каждый раз, когда я пытаюсь сделать это, это дает мне «# Значение!»ошибка.
Как мне это сделать?
(я пишу код для формулы в конце C #, а не в VBA. Обратите внимание.)
У меня естьпопытался использовать обычный объект "Microsoft.Office.Interop.Excel.Range".
namespace FormulaAddin
{
[Guid("29A34EFD-B8A3-48D8-847A-4BF402831617")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class Formulae
{
public Formulae ()
{
}
public int CountRange(Excel.Range nRange)
{
//Some code working on the range
}
#region Registering COM Object
[ComRegisterFunction]
public static void RegisterFunction (Type type)
{
Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type, "Programmable"));
RegistryKey key = Registry.ClassesRoot.OpenSubKey(GetSubKeyName(type, "InprocServer32"), true);
key.SetValue("", Environment.SystemDirectory + @"\mscoree.dll", RegistryValueKind.String);
}
[ComUnregisterFunction]
public static void UnregisterFunction (Type type)
{
Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type, "Programmable"), false);
}
private static string GetSubKeyName (Type type, string subKeyName)
{
System.Text.StringBuilder s = new System.Text.StringBuilder();
s.Append(@"CLSID\{");
s.Append(type.GUID.ToString().ToUpper());
s.Append(@"}\");
s.Append(subKeyName);
return s.ToString();
}
#endregion
}
}