Ошибка BERT при вызове пользовательской функции с помощью Application.Run VBA «Макрос может быть недоступен в этой книге или все макросы могут быть отключены». - PullRequest
0 голосов
/ 15 сентября 2018

Я на самом деле использую 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, но я получаю эту ошибку, и я не нашел ничего, чтобы избежать этой ошибки.

Спасибо за помощь

1 Ответ

0 голосов
/ 16 сентября 2018

Проблема решена!

Я использовал Windows 10, в onedrive / ковре маршрута документов, где BERT2 и пользовательские функции R, мне пришлось скопировать этот ковер в локальный ковер документа C: \ Users \ user \Документы и работает с точным кодом выше.

Позаботьтесь о маршрутах, если вам нужно работать с документами route в windows 10. OneDrive / Documents! = Пользователь / Documents

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...