Ниже приведён пример создания таблицы «A плюс B равно C.xlsm», в которой результат сложения элементов столбцов A и B отображается в столбце C:
A | B | C |
---|---|---|
3 | 2 | 5 |
2 | 2 | 4 |
40 | 1 | 41 |
Скопируйте файл base.xlsm и переименуйте его в A плюс B равно C.xlsm.
Создайте папку в любом месте и создайте в ней файл JavaScript plusAToB.js.
Откройте редактор кода (например, Sublime или Atom) и отредактируйте файл plusAToB.js, добавив следующий код:
ExcelResult = Number(ExcelArgu[0]) + Number(ExcelArгу[1]);
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-сервер успешно запущен.
Откройте файл A плюс B равно C.xlsm, Excel предложит вам разрешить использование макросов. Выберите «Да».
Перейдите на вкладку BASE_CODE_LIB и введите содержимое plusAToB.js в ячейку A4.
Нажмите сочетание клавиш Ctrl+Shift+R. В ячейке B4 появится код из файла plusAToB.js. Это означает, что код успешно добавлен в xlsm.
Введите значение 3 в ячейку A1 и значение 2 в ячейку B1.
Введите формулу =runJS("plusAToB.js",A1,B1) в ячейку C1 и нажмите Enter. В ячейке C1 должно появиться значение суммы элементов ячеек A1 и B1, то есть 5.
Повторите шаги 6–8 для ячеек A2, B2 и C2, введя значения 2, 2 и 4 соответственно.
Повторите шаги 6–8 для ячеек A3, B3 и C3, введя значения 40, 1 и 41 соответственно.
BASE_CODE_LIB — это рабочая таблица, предназначенная для хранения кода JavaScript. Любой код JavaScript, который необходимо выполнить, должен быть сохранён здесь.
Сочетание клавиш Ctrl+Shift+R вызывает функцию VBA UpdataJSFiles, которая выполняет файл UpdataJSFiles.js.
Поскольку движок JavaScript, вызываемый VBA, является компонентом COM системы Windows «Microsoft Script Control», он поддерживает ограниченный набор функций JavaScript. Поэтому рекомендуется использовать спецификацию JavaScript IE6.
В JavaScript переменная ExcelResult используется как возвращаемое значение ячейки. По умолчанию она равна 0, но её можно изменить.
Переменная ExcelArgu в JavaScript представляет собой массив, передаваемый функции runJS. Например, в формуле runJS("plusAToB.js",A1,B1), ExcelArgu[0] будет содержать значение ячейки A1, а ExcelArgu[1] — значение ячейки B1.
Вы можете вызывать другие функции 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]);
}
)
Между ячейками с содержимым в столбце A вкладки BASE_CODE_LIB, от A1 до последней заполненной ячейки, не должно быть пустых ячеек.
Так как пока нет решения проблемы обработки ошибок в JavaScript, невозможно определить, где именно в коде возникает ошибка. Рекомендуется тщательно проверять код перед использованием.
Как правильно импортировать файлы JavaScript.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )