Макросы Excel с Javascript

Вопрос:Я хочу манипулировать 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)

Вопрос:

Я хочу манипулировать 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 соответственно.

Оцените статью
Добавить комментарий