Как передать объект Range в формуле Excel, созданной с помощью C #? - PullRequest
0 голосов
/ 21 января 2019

Я создал формулу 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
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...