Я на самом деле использую VSTO c # для создания Addin, который использует BERT и имеет мост для получения пользовательских функций R в Excel. Но я получаю некоторые ошибки, пытаясь вызвать пользовательские функции в каталоге функций Bert, используя Application.Run в VBA
На самом деле у меня в классе ThisAddin:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
void InternalStartup()
{
}
public void BertCall(string functionName, String dataRange)
{
if(dataRange.Equals("00:00"))
{
MessageBox.Show("Blank cells were found, pleace fill it and try again");
}
else
{
double result = Application.Run("BERT.Call", functionName, getCurrentWorkSheet().Range[dataRange]);
MessageBox.Show(result.ToString());
}
}
private Worksheet getCurrentWorkSheet()
{
Worksheet currentWorksheet = Globals.Factory.GetVstoObject(
this.Application.ActiveWorkbook.Worksheets[1]);
return currentWorksheet;
}
А в другом классе под названием BertCalls у меня есть следующий код
Validations validate = new Validations();
public void bertCalls(string functionName)
{
Globals.ThisAddIn.BertCall(functionName, validate.getRange()); //this method calls ThisAddIn BertCall method, that handles the comunication with Bert
}
public void Sumar()
{
Excel.Range selectedRange = Globals.ThisAddIn.Application.Selection;
bertCalls("sum");
}
Как вы видите, я использую несколько пользовательских классов проверки.
На самом деле это работает нормально, когда я вызываю встроенные R-функции, например, «sum», но когда я пытаюсь вызвать пользовательские функции, у меня возникла ошибка компиляции при исключении метода «Не удается выполнить макрос или он отключен»
Я сделал следующие вещи:
- Создание функций в Документах / Bert2 / functions
- Попытка вызова по имени пользовательской функции с помощью параметра BERT.Call, но не работает.
- Включение центра управления безопасностью для приложений VBA и макросов
- Измените параметр Application.Run так же, как в документации BERT, на
Application.Run (functionName, getCurrentWorkSheet (). Range [dataRange]); где functionName - имя пользовательской функции и вызывается R.AddTest, но получает большое отрицательное число .
Мне нужно выполнить пользовательские функции, используя BERT с VBA, но я получаю эту ошибку, и я не нашел ничего, чтобы избежать этой ошибки.
Спасибо за помощь