Вопрос:
Я хочу манипулировать Excel-таблицами с использованием макросов в Javascript, а не по умолчанию VBA. Я могу выполнить код javascript, используя следующий код VBA
‘javascript to execute Dim b As String b = «function meaningOfLife(a,b) {return 42;}» ‘VBA tool to run it Dim o As New ScriptControl o.Language = «JScript» o.AddCode b MsgBox o.Run(«meaningOfLife», 0, 1)
это позволяет мне выполнить произвольный javascript, однако у меня нет доступа к электронной таблице excel из среды javascript. Есть ли способ, который я могу установить и получить значения листа в активном листе из javascript?
Лучший ответ:
Это зависит от того, что вы хотите делать “Программирование Excel”.
Если вы хотите управлять файлами Excel, вы можете сделать это через автоматизацию COM или даже ODBC в некоторой степени, используя JavaScript, запущенный в среде сценариев Windows.
Но если вы хотите, чтобы ваш код работал в активном сеансе Excel, что делает посетитель, у вас будет меньше вариантов.
См. этот вопрос. Я опубликовал несколько лет назад, когда у меня был JavaScript, который я хотел запустить в Excel, и у меня не было бюджета для преобразования в VBA:
Как использовать JavaScript в макросе Excel?
Ответ №1
Конечно, теперь в Excel 2013 вы имеете JavaScript API (http://zoom.it/UAzs#full) и можете взаимодействовать с электронной таблицей, используя панель задач и контент ПРОГРАММЫ.
Ответ №2
Для пользователей, использующих Excel 2016 или более позднюю версию, в надстройке есть надстройка Excel Funfun, которая фактически позволяет вам писать и запускать код JavaScript непосредственно в Excel. И, конечно, ваш код JavaScript также имеет доступ к данным, хранящимся в электронной таблице. Вот скриншот, как это выглядит в Excel
2016.
В середине интерфейса у вас есть раздел, в котором вы можете писать JavaScript, CSS и HTML-код. Это похоже на детскую площадку, встроенную в Excel. Но у Funfun также есть онлайн-редактор, в котором вы можете протестировать свой код. Вы можете увидеть это на рис. Ниже. Я также разместил ссылку примера на первой картинке, чтобы вы могли играть.
https://www.funfun.io/1/#/edit/5a4e0d461010eb73fe125c4e
Что особенно важно в онлайн-редакторе Funfun, так это то, что он содержит “таблицу”, как и Excel. Хотя вы вообще не можете форматировать, вы можете скопировать свои данные в ячейки и проверить свой код напрямую.
Чтобы использовать данные, хранящиеся в электронной таблице, все, что вам нужно сделать, это написать некоторую конфигурацию в файле short.io Funfun, чтобы рассказать JavaScript о том, какая область в электронной таблице содержит ваши данные. Например, в приведенном выше примере все, что вам нужно написать, это
{ «data»: «=A2:B9» }
И в коде JavaScript для чтения данных используется объект с именем $internal. Поэтому, чтобы прочитать данные, хранящиеся в A2: B9, вам нужно написать
var data = $internal.data;
И все сделано. Вы можете перейти к документации Funfu, если вы хотите узнать больше.
Если вы удовлетворены результатом, достигнутым в онлайн-редакторе, вы можете легко загрузить результат в Excel, используя указанный выше URL. Сначала вам нужно вставить надстройку Funfun из Вставить – Мои надстройки. Вот несколько скриншотов, показывающих, как вы могли это сделать.
Раскрытие информации: Я разработчик Funfun
Ответ №3
Попробуйте Excel-DNA для программного интерфейса для Excel. Еще два хороших инструментария – xlwings и Excel-REPL, которые поддерживают интерфейс Python и Clojure соответственно.