1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cxwithyxy-Excel_JS_Runtime

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
how_To_Use.md 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 18:50 080c797

Разработка примера


Цель

Ниже приведён пример создания таблицы «A плюс B равно C.xlsm», в которой результат сложения элементов столбцов A и B отображается в столбце C:

A B C
3 2 5
2 2 4
40 1 41

Шаги

  1. Скопируйте файл base.xlsm и переименуйте его в A плюс B равно C.xlsm.

  2. Создайте папку в любом месте и создайте в ней файл JavaScript plusAToB.js.

  3. Откройте редактор кода (например, Sublime или Atom) и отредактируйте файл plusAToB.js, добавив следующий код:

ExcelResult = Number(ExcelArgu[0]) + Number(ExcelArгу[1]);
  1. В командной строке перейдите в папку, где находится файл plusAToB.js, и выполните команду http-server, чтобы запустить http-сервер. Командная строка должна отобразить следующее:
Starting up http-server, serving ./
Available on:
  http://172.27.35.27:8080
  http://192.168.174.1:8080
  http://192.168.159.1:8080
  http://192.168.137.1:8080
  http://127.
  0.
  0.1:8080
Hit CTRL-C to stop the server

Вы можете открыть браузер и перейти по адресу http://127.0.0.1:8080/plusAToB.js. Если вы увидите код из шага 3, это означает, что http-сервер успешно запущен.

  1. Откройте файл A плюс B равно C.xlsm, Excel предложит вам разрешить использование макросов. Выберите «Да».

  2. Перейдите на вкладку BASE_CODE_LIB и введите содержимое plusAToB.js в ячейку A4.

  3. Нажмите сочетание клавиш Ctrl+Shift+R. В ячейке B4 появится код из файла plusAToB.js. Это означает, что код успешно добавлен в xlsm.

  4. Введите значение 3 в ячейку A1 и значение 2 в ячейку B1.

  5. Введите формулу =runJS("plusAToB.js",A1,B1) в ячейку C1 и нажмите Enter. В ячейке C1 должно появиться значение суммы элементов ячеек A1 и B1, то есть 5.

  6. Повторите шаги 6–8 для ячеек A2, B2 и C2, введя значения 2, 2 и 4 соответственно.

  7. Повторите шаги 6–8 для ячеек A3, B3 и C3, введя значения 40, 1 и 41 соответственно.

О вкладке BASE_CODE_LIB

  1. BASE_CODE_LIB — это рабочая таблица, предназначенная для хранения кода JavaScript. Любой код JavaScript, который необходимо выполнить, должен быть сохранён здесь.

  2. Сочетание клавиш Ctrl+Shift+R вызывает функцию VBA UpdataJSFiles, которая выполняет файл UpdataJSFiles.js.

Об использовании JavaScript

  1. Поскольку движок JavaScript, вызываемый VBA, является компонентом COM системы Windows «Microsoft Script Control», он поддерживает ограниченный набор функций JavaScript. Поэтому рекомендуется использовать спецификацию JavaScript IE6.

  2. В JavaScript переменная ExcelResult используется как возвращаемое значение ячейки. По умолчанию она равна 0, но её можно изменить.

  3. Переменная ExcelArgu в JavaScript представляет собой массив, передаваемый функции runJS. Например, в формуле runJS("plusAToB.js",A1,B1), ExcelArgu[0] будет содержать значение ячейки A1, а ExcelArgu[1] — значение ячейки B1.

  4. Вы можете вызывать другие функции JavaScript с помощью спецификации AMD define. Пример:

// Файл yewuxiezuo-zhixingshouceLib.js
define(
    [],
    function ()
    {
        var obj = {
            getMarkIndex: function (dataIDs, _searchNum)
            {
                var len = dataIDs.length;
                for(var i = 0 ;i < len; i ++){
                    if(_searchNum == dataIDs[i]){
                        return i;
                    }
                }
            },
            getMarkName: function (numData, manData, _searchNum)
            {
                return manData[this.getMarkIndex(numData, _searchNum)];
            }
        };
        return obj;
    }
)
// Файлyewuxiezuo-idToManl.js
define(
    ["yewuxiezuo-zhixingshouceLib.js"],
    function (zhixingshouceLib)
    {
        var numData = ExcelArgu[0];
        var manData = ExcelArgu[1];
        ExcelResult = zhixingshouceLib.getMarkName(numData, manData, ExcelArgu[2]);
    }
)

Примечания

  1. Между ячейками с содержимым в столбце A вкладки BASE_CODE_LIB, от A1 до последней заполненной ячейки, не должно быть пустых ячеек.

  2. Так как пока нет решения проблемы обработки ошибок в JavaScript, невозможно определить, где именно в коде возникает ошибка. Рекомендуется тщательно проверять код перед использованием.

Способы импорта файлов JavaScript

Как правильно импортировать файлы JavaScript.

Режим NET_MODE

Что такое режим NET_MODE.

Режим DEBUG_MODE

Что такое режим DEBUG_MODE.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cxwithyxy-Excel_JS_Runtime.git
git@api.gitlife.ru:oschina-mirror/cxwithyxy-Excel_JS_Runtime.git
oschina-mirror
cxwithyxy-Excel_JS_Runtime
cxwithyxy-Excel_JS_Runtime
master