Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web More…Less
Automate your repetitive tasks with Office Scripts in Excel for the web, Windows, and Mac. Create scripts and replay them whenever you want. Share your scripts across the organization to help others make their workflows fast and consistent. Edit your scripts as your workflow changes and let the cloud update your solutions across the organization.
Create an Office Script
There are two ways to make a new Office Script.
-
Record your actions with the Action Recorder. This is great when you have consistent actions that you take on your workbooks. No coding knowledge is needed to record and share Office Scripts. Get started recording with Record your actions as Office Scripts — Microsoft Support.
-
Use the Code Editor to work with TypeScript code for advanced scripts. To learn how to start with the Action Recorder and edit scripts to better suit your needs, see the tutorial Record, edit, and create Office Scripts in Excel — Office Scripts | Microsoft Learn.
Run an Office Script
-
All the scripts you and your workbook have access to are found under Automate > All scripts. The script gallery shows the most recent scripts.
-
Select the script you want to run. It will display in the Code Editor. Select the Run button to start the script. You’ll see a brief notification that the script is running, which disappears when the script is complete.
-
More options — Select the ellipsis (…) on the right-hand side of the Code Editor pane, to see the contextual menu. Here, you have options to:
-
Rename the script
-
Make a Copy of the script
-
Share the script
-
Integrate the script with Power Automate by using Create Flow
-
Delete the script
-
Potential Errors
-
Certain actions may be fine the first time you record your script, but fail when you play it again. For instance, in the earlier example, where we formatted some sample data as a table, our code would fail if we tried to run it on the updated table, because Excel doesn’t allow tables to overlap each other. At this point, the Code Editor displays an error message.
Select the View Logs button to display a brief error explanation at the bottom of the Code Editor pane.
-
Unsupported features — We’re constantly working to add support for more features, but at this time not everything is supported. When this happens, you’ll see a note in the Record Actions pane. Such actions aren’t added to the script and will be ignored.
Need more help?
You can always ask an expert in the Excel Tech Community or get support in the Answers community.
See also
Record your actions as Office Scripts
Office Scripts technical documentation
Record, edit, and create Office Scripts in Excel on the web
Troubleshooting Office Scripts
Sample scripts for Office Scripts in Excel on the web
Create a button to run an Office Script
Need more help?
Содержание
- Introduction to Office Scripts in Excel
- Create an Office Script
- Run an Office Script
- Potential Errors
- Need more help?
- Основы сценариев Office в Excel
- TypeScript: язык сценариев Office
- Функция main : начальная точка сценария
- Обзор объектной модели
- Книга
- Диапазоны
- Образец диапазона
- Типы значений диапазона
- Диаграммы, таблицы и другие объекты данных
- Создание таблицы
- Создание диаграммы
- Коллекции
- Добавление объектов Excel с помощью сценария
- Проверка существования объекта в коллекции
- Удаление объектов Excel с помощью сценария
- Дальнейшее чтение по объектной модели
- Fundamentals for Office Scripts in Excel
- TypeScript: The language of Office Scripts
- main function: The script’s starting point
- Object model overview
- Workbook
- Ranges
- Range sample
- The types of Range values
- Charts, tables, and other data objects
- Create a table
- Create a chart
- Collections
- Add Excel objects with a script
- Verify an object exists in the collection
- Remove Excel objects with a script
- Further reading on the object model
Introduction to Office Scripts in Excel
Automate your repetitive tasks with Office Scripts in Excel for the web, Windows, and Mac. Create scripts and replay them whenever you want. Share your scripts across the organization to help others make their workflows fast and consistent. Edit your scripts as your workflow changes and let the cloud update your solutions across the organization.
Note: Before you can use Office Scripts, an administrator must enable them.
Create an Office Script
There are two ways to make a new Office Script.
Record your actions with the Action Recorder (Excel on the web only). This is great when you have consistent actions that you take on your workbooks. No coding knowledge is needed to record and share Office Scripts. Get started recording with Record your actions as Office Scripts — Microsoft Support.
Use the Code Editor to work with TypeScript code for advanced scripts. To learn how to start with the Action Recorder and edit scripts to better suit your needs, see the tutorial Record, edit, and create Office Scripts in Excel on the web — Office Scripts | Microsoft Learn.
Run an Office Script
All the scripts you and your workbook have access to are found under Automate > All scripts. The script gallery shows the most recent scripts.
Select the script you want to run. It will display in the Code Editor. Select the Run button to start the script. You’ll see a brief notification that the script is running, which disappears when the script is complete.
More options — Select the ellipsis (. ) on the right-hand side of the Code Editor pane, to see the contextual menu. Here, you have options to:
Rename the script
Make a Copy of the script
Share the script
Integrate the script with Power Automate by using Create Flow
Delete the script
Potential Errors
Certain actions may be fine the first time you record your script, but fail when you play it again. For instance, in the earlier example, where we formatted some sample data as a table, our code would fail if we tried to run it on the updated table, because Excel doesn’t allow tables to overlap each other. At this point, the Code Editor displays an error message.
Select the View Logs button to display a brief error explanation at the bottom of the Code Editor pane.
Unsupported features — We’re constantly working to add support for more features, but at this time not everything is supported. When this happens, you’ll see a note in the Record Actions pane. Such actions aren’t added to the script and will be ignored.
Need more help?
You can always ask an expert in the Excel Tech Community or get support in the Answers community.
Источник
Основы сценариев Office в Excel
Эта статья познакомит вас с техническими аспектами сценариев Office. Вы узнаете о критически важных частях кода сценария на основе TypeScript и о том, как при работе совмещаются объекты Excel и API-интерфейсы.
TypeScript: язык сценариев Office
Сценарии Office написаны на языке TypeScript, который является супермножеством JavaScript. Если вы знакомы с JavaScript, ваши знания пригодятся, так как большая часть кода одинакова в обоих языках. Перед началом написания кода сценариев Office рекомендуется получить опыт программирования на начальном уровне. Следующие ресурсы помогут вам понять код сценариев Office.
- Изучение основ JavaScript Вы должны быть хорошо знакомы с такими понятиями, как переменные, поток управления, функции и типы данных. Mozilla предлагает хорошее комплексное руководство по JavaScript.
- Узнайте о типах в TypeScript. TypeScript основан на JavaScript, обеспечивая при компиляции применение правильных типов для вызовов методов и назначений. Наиболее полезной будет документация TypeScript по типам объектов, определению типа и совместимости типов.
Функция main : начальная точка сценария
Каждый сценарий должен содержать функцию main с типом ExcelScript.Workbook в качестве первого параметра. При выполнении функции приложение Excel вызывает функцию main , предоставляя книгу в качестве ее первого параметра. Параметр ExcelScript.Workbook всегда должен быть первым параметром.
Код внутри main функции запускается при запуске скрипта. main может вызывать другие функции в вашем скрипте, но код, который не содержится в функции, не будет работать. Сценарии не могут вызывать другие сценарии Office.
Power Automate позволяет подключать сценарии в потоках. Данные передаются между сценариями и потоком через параметры и возвращаемые результаты функции main . Способ интеграции сценариев Office с Power Automate подробно описан в статье Запуск сценариев Office с помощью Power Automate.
Обзор объектной модели
Чтобы написать сценарий, необходимо знать, как устроены API сценариев Office. Компоненты книги определенным образом взаимосвязаны друг с другом. Эти взаимосвязи во многом схожи с пользовательским интерфейсом Excel.
- Рабочая книга содержит одну или несколько рабочих листов.
- Рабочий лист предоставляет доступ к ячейкам через объекты Range.
- Range представляет группу смежных клеток.
- Диапазоны используются для создания и размещения таблиц, диаграмм, фигур и других объектов визуализации данных или организации.
- Рабочий лист содержит коллекции тех объектов данных, которые присутствуют на отдельном листе.
- Рабочие книги содержат коллекции некоторых из этих объектов данных (таких как таблицы) для всей рабочей книги.
Книга
Для каждого сценария предоставляется объект workbook типа Workbook , он предоставляется функцией main . Это объект верхнего уровня, через который сценарий взаимодействует с книгой Excel.
Следующий сценарий получает активный лист из книги и записывает его имя.
Диапазоны
Диапазон — это группа непрерывных ячеек в рабочей книге. В сценариях обычно используется нотация в стиле A1 (например, B3 для отдельной ячейки в столбце B и строке 3 или C2:F4 для ячеек из столбцов с C по F и строк с 2 по 4) для определения диапазонов.
У диапазонов три основных свойства: значения, формулы и формат. Эти свойства получают или устанавливают значения ячеек, формулы для вычисления и визуальное форматирование ячеек. Для доступа к ним используются getValues , getFormulas и getFormat . Значения и формулы можно изменять с помощью setValues и setFormulas , а формат является объектом RangeFormat , который состоит из нескольких меньших объектов, задаваемых по отдельности.
Диапазоны используют двухмерные массивы для управления информацией. Дополнительные сведения об обработке массивов в инфраструктуре сценариев Office см. в статье Работа с диапазонами.
Образец диапазона
В следующем примере показано, как создавать записи продаж. В этом сценарии используются объекты Range для установки значений, формул и частей формата.
Выполнение этого скрипта создает следующие данные в текущей рабочей таблице:
Типы значений диапазона
Каждая ячейка содержит значение. Это значение является базовым значением, введенным в ячейку, которое может отличаться от текста, отображаемого в Excel. Например, в ячейке может отображаться дата 02.05.2021, но действительное значение — 44318. Это отображаемое значение можно изменить с использованием числового формата, но действительное значение и тип в ячейке изменяются только при настройке нового значения.
При использовании значения ячейки важно сообщить TypeScript, какое значение вы ожидаете получить из ячейки или диапазона. Ячейка содержит один из следующих типов: string , number или boolean . Чтобы сценарий обрабатывал возвращенные значения как один из этих типов, необходимо объявить тип.
Следующий сценарий получает среднюю цену из таблицы в предыдущем примере. Обратите внимание на код priceRange.getValues() as number[][] . Это утверждает number[][] в качестве типа значений диапазона. После этого все значения в этом массиве могут рассматриваться как числа в сценарии.
Диаграммы, таблицы и другие объекты данных
Скрипты могут создавать и управлять структурами данных и визуализациями в Excel. Таблицы и диаграммы являются двумя наиболее часто используемыми объектами, но API поддерживают сводные таблицы, фигуры, изображения и многое другое. Они сохраняются в коллекциях, которые рассматриваются далее в этой статье.
Создание таблицы
Создавайте таблицы, используя заполненные данными диапазоны. Элементы управления форматированием и таблицами (например, фильтры) автоматически применяются к диапазону.
Следующий скрипт создает таблицу с использованием диапазонов из предыдущего примера.
Выполнение этого сценария на листе с предыдущими данными создает следующую таблицу:
Создание диаграммы
Создайте диаграммы для визуализации данных в диапазоне. Сценарии позволяют создавать десятки разновидностей диаграмм, каждая из которых может быть настроена в соответствии с вашими потребностями.
Следующий скрипт создает простую столбчатую диаграмму для трех элементов и размещает ее на 100 пикселей ниже верхней части листа.
Запуск этого скрипта на листе с предыдущей таблицей создает следующую диаграмму:
Коллекции
Если объект Excel содержит коллекцию из одного или нескольких объектов одного типа, он сохраняет их в массиве. Например, объект Workbook содержит Worksheet[] . Доступ к этому массиву обеспечивается методом Workbook.getWorksheets() . Множественные методы get , например Worksheet.getCharts() , возвращают всю коллекцию объектов в качестве массива. Вы увидите этот шаблон во всех API сценариев Office: объект Worksheet использует метод getTables() , возвращающий Table[] , объект Table использует метод getColumns() , возвращающий TableColumn[] , и т. д.
Возвращаемый массив является обычным массивом, поэтому все обычные операции массивов доступны для вашего сценария. Также можно получить доступ к отдельным объектам внутри коллекции с помощью значения индекса массива. Например, workbook.getTables()[0] возвращает первую таблицу в коллекции. Дополнительные сведения об использовании встроенных функций массива в структуре сценариев Office см. в статье Работа с коллекциями.
Отдельные объекты также доступны из коллекции с помощью метода get . Одиночные методы get , например Worksheet.getTable(name) , возвращают один объект и требуют идентификатор или имя конкретного объекта. Этот идентификатор или имя обычно задается сценарием или с помощью пользовательского интерфейса Excel.
Следующий сценарий возвращает все таблицы в книге. При этом отображаются заголовки, видны кнопки фильтров, а для таблицы устанавливается стиль «TableStyleLight1».
Добавление объектов Excel с помощью сценария
Можно программным образом добавлять объекты документов, например таблицы или диаграммы, путем вызова соответствующего метода add , доступного для родительского объекта.
Не следует вручную добавлять объекты в массивы коллекций. Используйте методы add для родительских объектов. Например, можно добавить Table к Worksheet методом Worksheet.addTable .
Следующий сценарий создает таблицу в Excel на первом листе книги. Обратите внимание, что метод addTable возвращает созданную таблицу.
Большинство объектов Excel используют метод setName . Это позволяет легко получить доступ к объектам Excel позже в сценарии или в других сценариях для той же книги.
Проверка существования объекта в коллекции
Перед продолжением сценариям часто требуется проверить, существует ли таблица или похожий объект. Используйте имена, заданные сценариями или с помощью пользовательского интерфейса Excel, чтобы определить необходимые объекты и действовать соответствующим образом. Методы get возвращают undefined , когда запрашиваемый объект отсутствует в коллекции.
Следующий сценарий запрашивает таблицу MyTable и использует оператор if. else , чтобы проверить, найдена ли таблица.
Распространенный шаблон в сценариях Office — воссоздание таблицы, диаграммы или другого объекта при каждом запуске сценария. Если старые данные не нужны, рекомендуется удалить старый объект перед созданием нового. Это позволяет избежать конфликтов имен или других различий, которые могли быть добавлены другими пользователями.
Следующий сценарий удаляет таблицу MyTable, если она существует, а затем добавляет новую таблицу с таким же именем.
Удаление объектов Excel с помощью сценария
Чтобы удалить объект, вызовите метод delete этого объекта.
Как и в случае добавления объектов, не следует вручную удалять объекты из массивов коллекций. Используйте методы delete для объектов типа коллекции. Например, для удаления Table из Worksheet используйте Table.delete .
Следующий сценарий удаляет первый лист в книге.
Дальнейшее чтение по объектной модели
Справочная документация по API сценариев Office представляет собой полный список объектов, используемых в сценариях Office. Там вы можете использовать оглавление, чтобы перейти к любому классу, о котором вы хотите узнать больше. Ниже приведены несколько часто просматриваемых страниц.
Сведения, относящиеся к объектной модели сводной таблицы, см. в разделе «Работа со сводными таблицами в сценариях Office».
Источник
Fundamentals for Office Scripts in Excel
This article will introduce you to the technical aspects of Office Scripts. You’ll learn the critical parts of the TypeScript-based script code and how the Excel objects and APIs work together.
TypeScript: The language of Office Scripts
Office Scripts are written in TypeScript, which is a superset of JavaScript. If you’re familiar with JavaScript, your knowledge will carry over because much of the code is the same in both languages. We recommend you have some beginner-level programming knowledge before starting your Office Scripts coding journey. The following resources can help you understand the coding side of Office Scripts.
- Learn the basics of JavaScript. You should feel comfortable with concepts like variables, control flow, functions, and data types. Mozilla offers a good, comprehensive tutorial on JavaScript.
- Learn about types in TypeScript. TypeScript builds on JavaScript by ensuring at compile-time that the right types are used for method calls and assignments. The TypeScript documentation on object types, type inference, and type compatibility will be the most useful.
main function: The script’s starting point
Each script must contain a main function with the ExcelScript.Workbook type as its first parameter. When the function runs, the Excel application invokes the main function by providing the workbook as its first parameter. An ExcelScript.Workbook should always be the first parameter.
The code inside the main function runs when the script is run. main can call other functions in your script, but code that’s not contained in a function will not run. Scripts cannot invoke or call other Office Scripts.
Power Automate allows you to connect scripts in flows. Data is passed between the scripts and the flow through the parameters and returns of the main function. How to integrate Office Scripts with Power Automate is covered in detail in Run Office Scripts with Power Automate.
Object model overview
To write a script, you need to understand how the Office Scripts APIs fit together. The components of a workbook have specific relations to one another. In many ways, these relations match those of the Excel UI.
- A Workbook contains one or more Worksheets.
- A Worksheet gives access to cells through Range objects.
- A Range represents a group of contiguous cells.
- Ranges are used to create and place Tables, Charts, Shapes, and other data visualization or organization objects.
- A Worksheet contains collections of those data objects that are present in the individual sheet.
- Workbooks contain collections of some of those data objects (such as Tables) for the entire Workbook.
Workbook
Every script is provided a workbook object of type Workbook by the main function. This represents the top level object through which your script interacts with the Excel workbook.
The following script gets the active worksheet from the workbook and logs its name.
Ranges
A range is a group of contiguous cells in the workbook. Scripts typically use A1-style notation (e.g., B3 for the single cell in column B and row 3 or C2:F4 for the cells from columns C through F and rows 2 through 4) to define ranges.
Ranges have three core properties: values, formulas, and format. These properties get or set the cell values, formulas to be evaluated, and the visual formatting of the cells. They are accessed through getValues , getFormulas , and getFormat . Values and formulas can be changed with setValues and setFormulas , while the format is a RangeFormat object comprised of several smaller objects that are individually set.
Ranges use two-dimensional arrays to manage information. For more information on handling arrays in the Office Scripts framework, see Work with ranges.
Range sample
The following sample shows how to create sales records. This script uses Range objects to set the values, formulas, and parts of the format.
Running this script creates the following data in the current worksheet:
The types of Range values
Each cell has value. This value is the underlying value entered into the cell, which may be different from the text displayed in Excel. For example, you might see «5/2/2021» displayed in the cell as a date, but the actual value is 44318. This display can be changed with the number format, but the actual value and type in the cell only changes when a new value is set.
When you are using the cell value, it’s important to tell TypeScript what value you are expecting to get from a cell or range. A cell contains one of the following types: string , number , or boolean . In order for your script to treat the returned values as one of those types, you must declare the type.
The following script gets the average price from the table in the previous sample. Note the code priceRange.getValues() as number[][] . This asserts the type of the range values to be a number[][] . All the values in that array can then be treated as numbers in the script.
Charts, tables, and other data objects
Scripts can create and manipulate the data structures and visualizations within Excel. Tables and charts are two of the more commonly used objects, but the APIs support PivotTables, shapes, images, and more. These are stored in collections, which will be discussed later in this article.
Create a table
Create tables by using data-filled ranges. Formatting and table controls (such as filters) are automatically applied to the range.
The following script creates a table using the ranges from the previous sample.
Running this script on the worksheet with the previous data creates the following table:
Create a chart
Create charts to visualize the data in a range. Scripts allow for dozens of chart varieties, each of which can be customized to suit your needs.
The following script creates a simple column chart for three items and places it 100 pixels below the top of the worksheet.
Running this script on the worksheet with the previous table creates the following chart:
Collections
When an Excel object has a collection of one or more objects of the same type, it stores them in an array. For example, a Workbook object contains a Worksheet[] . This array is accessed by the Workbook.getWorksheets() method. get methods that are plural, such as Worksheet.getCharts() , return the entire object collection as an array. You’ll see this pattern throughout the Office Scripts APIs: the Worksheet object has a getTables() method that returns a Table[] , the Table object has a getColumns() method that returns a TableColumn[] , as so on.
The returned array is a normal array, so all the regular array operations are available for your script. You can also access individual objects within the collection using the array index value. For example, workbook.getTables()[0] returns the first table in the collection. For more information on using the built-in array functionality with the Office Scripts framework, see Work with collections.
Individual objects are also accessed from the collection through a get method. get methods that are singular, such as Worksheet.getTable(name) , return a single object and require an ID or name for the specific object. This ID or name is usually set by the script or through the Excel UI.
The following script gets all tables in the workbook. It then ensures the headers are displays, the filter buttons are visible, and the table style is set to «TableStyleLight1».
Add Excel objects with a script
You can programmatically add document objects, such as tables or charts, by calling the corresponding add method available on the parent object.
Do not manually add objects to collection arrays. Use the add methods on the parent objects For example, add a Table to a Worksheet with the Worksheet.addTable method.
The following script creates a table in Excel on the first worksheet in the workbook. Note that the created table is returned by the addTable method.
Most Excel objects have a setName method. This gives you an easy way to access Excel objects later in the script or in other scripts for the same workbook.
Verify an object exists in the collection
Scripts often need to check if a table or similar object exists before continuing. Use the names given by scripts or through the Excel UI to identify necessary objects and act accordingly. get methods return undefined when the requested object is not in the collection.
The following script requests a table named «MyTable» and uses an if. else statement to check if the table was found.
A common pattern in Office Scripts is to recreate a table, chart, or other object every time the script is run. If you don’t need the old data, it’s best to delete the old object before creating the new one. This avoids name conflicts or other differences that may have been introduced by other users.
The following script removes the table named «MyTable», if it is present, then adds a new table with the same name.
Remove Excel objects with a script
To delete an object, call the object’s delete method.
As with adding objects, do not manually remove objects from collection arrays. Use the delete methods on the collection-type objects. For example, remove a Table from a Worksheet using Table.delete .
The following script removes the first worksheet in the workbook.
Further reading on the object model
The Office Scripts API reference documentation is a comprehensive listing of the objects used in Office Scripts. There, you can use the table of contents to navigate to any class you’d like to learn more about. The following are several commonly viewed pages.
For information specific to the PivotTable object model, see Work with PivotTables in Office Scripts.
Источник
Содержание
- 1 Excel VBA Macro script
- 2 Создаем собственную библиотеку Excel макросов — Personal.xlsb
-
- 2.0.1 Чуть-чуть лирики
- 2.0.2 Собственно, код
-
- 3 Что такое VBA
- 4 Объекты, коллекции, свойства и методы
- 5 Как начать
- 6 Макросы в Excel
- 7 Пример 1
- 8 Пример 2
- 9 Пример 3
- 10 Пример 4
-
- 10.0.1 Первый способ. Скрипт «от руки».
- 10.0.2 Второй способ. Скрипт продаж в офисных программах (Excel, Word и тд)
- 10.0.3 Третий способ. Специальные сервисы «Конструкторы скриптов продаж»
- 10.0.4 Полезные ссылки:
-
В процессе работы неоднократно приходиться сталкиваться с табличными процессорами типа Excel. И хотя это не совсем САПР, но информацию в рамках BIM контекста хочешь не хочешь, а приходится обрабатывать, либо с помощью Базы Данных, либо в тех самых экселевских табличках. А лучше и так и эдак.
Естественно, как и во всем, что связанно с компьютером эту деятельность тоже можно изрядно упростить с помощью автоматизации. С появлением таких вещей как Pivot Tables и Power Queries — так и вовсе становится не понятно как работали с информацией до этого. Но тут мы поговорим о старых добрых ламповых макросах на VBA.
Excel VBA Macro script
Макросы в экселе пишут на VBA (Visual Basic Advance) — слегка переработанный под нужды офисного пакета старый добрый Бейсик, со всеми своими достоинствами и недостатоками. Сами программы по умолчанию являются частью эксель файла. И убедится в этом можно с помощью соответствующей консоли (Microsoft Visual Basic for Application)
Добраться до них можно в любое время нажав сочетание клавишь Alt+F11
Но сначала надо включить вкладку Developers в стандартной ленте экселя.
Для этого:
- Ннаводим курсор на ленту и нажимаем Правую Клавишу Мыши (ПКМ)
- В открывшемся списке выбираем — Customize the Ribbon (Настройка Ленты)
- Ищем как показано на скриншоте пункт Developer (Разработка) и нажимаем чтобы появилась галочка
- Ок.
Путем этих не хитрых манипуляций мы получили доступ к панели разработчика в Excel — не будем особо заострять на ней внимание. Нам там понадобится буквально несколько кнопок
— Visual Basic — собственно уже обусжденная выше консоль для работы со скриптами.
— Macos — список доступных макросов для использования.
— Record Macro — эта кнопка позволяет включить запись ваших действий с табличным редактором.
Ну и дальше порядок работы довольно простой — запускаете запись макроса, производите необходимые манипуляции с данными, останавливаете запись (той же кнопкой что и включили), идете в редактор, правите если необходимо. Потом с помощью списка макросов вызываете вновь созданный макрос в любое удобное время.
Однако есть нюанс. Созданный макроскрипт будет по умолчанию доступен только в одном эксель файле. Скопировать его в другой — конечно можно, но довольно заморочно. Есть ли выход из этой ситуации? Конечно!
Создаем собственную библиотеку Excel макросов — Personal.xlsb
Для этого нам нужно создать файл Personal.xlsb. Создается он один раз, и потом автоматически подгружается Экселем, благодаря чему сохраненные в нем Скрипты и функции становятся доступны во всех ваших файлах. Другой плюс — теперь они не сохраняются в самих файлах, и соответственно можно без опаски передавать результаты за пределы компании.
Собственно смотрим на картинку:
1. Необходимо включить макрос на запись.
2. В появившемся окне в выпадающем списке выбрать пункт — Personal Macro Workbook. Если такого файла не существует — он будет создан автоматические (то что нам и нужно)
3. Запускаем скрипт на запись
4. И останавливаем её.
Готово. Теперь у нас есть файл в который наши модули и функции можно закинуть единожды, а доступны они будут сразу во всех эксель файлах. К тому же так они не утекут за пределы компании, вместе с файлами.
Небольшой топик-шпаргалка для быстрого написания скриптов для автоматической обработки документов ms office’а. А так же для помощи в преодолении синдрома чистого листа.
Как правильно заметили в недавнем топике, сама работа скрипта может быть и не быстрой, но чаще важнее сам результат, да и объёмы далеко не всегда такие большие. Зато Automation позволяет написать скрипт практически на любом языке. Здесь я выдам заготовки для JavaScript и IronPython, но, надеюсь, в комментариях найдётся место и для других языков (например, на PowerShell).
Чуть-чуть лирики
Для работы через automation нужен следующий минимум:
- MS Office (если есть документы, то он, видимо, есть/будет установлен)
- Интерпретатор выбранного языка (для JS, VBS и PowerShell этот пункт не актуален)
- Ещё раз MS Office для подглядывание за генерацией кода в VBA (в записываемых макросах)
Ещё раз повторюсь. Цель — быстро написать скрипт без сложных требований (производительность, встраивание, работа без ms office и т.п.).
Собственно, код
Имхо, самый разумный вариант — это JScript или VBScript (точнее Windows script host), т.к. интерпретатор уже идёт с операционной системой, и можно раздавать скрипт друзьям/коллегам, не требуя от них никаких дополнительных действий — перетащил xls(x)-файл на скрипт в explorer’е и работа пошла:
var excel = WScript.CreateObject("Excel.Application"); var fileName = WScript.Arguments.Item(0); try { main(); } catch(e) { // Чтобы процесс не завис в памяти delete excel; throw e; } function main() { //excel.Visible = true; // Иногда хочется поспать перед экраном, где что-то происходит, но так работает дольше //var book = excel.Workbooks.Add(); // Новая книга (создать) var book = excel.Workbooks.Open(fileName); // Старая книга var sheet = book.Worksheets.Item(1); // (в VBA нумерация с единицы) // Что-то делаем for (var i = 1; i Macros -> Record macro..., имя значения не имеет), открываем его код (View -> Macros -> View macros...) и делаем по образу и подобию. Сама запись макроса — просто набор действий, которые хочется автоматизировать. Например, вставить или изменить какое-то значение, поменять цвет/шрифт и т.п. Запись макроса лучше производить в отдельном документе, во избежание. Для лучшей ориентации в мире объектов объектном мире Excel — система классов (тоже самое, но для Office 2010). Небольшой бонус: константы для цветовых индексов. P.S. Где-то у меня был код для работы с Automation из C++, но это уже совсем другая история :)
Немногие знают, что первая версия популярного продукта Microsoft Excel появилась в 1985 году. С тех пор он пережил несколько модификаций и востребован у миллионов пользователей по всему миру. При этом многие работают лишь с малой толикой возможностей этого табличного процессора и даже не догадываются, как им могло бы облегчить жизнь умение программирования в Excel.
Что такое VBA
Программирование в Excel осуществляется посредством языка программирования Visual Basic for Application, который изначально встроен в самый известный табличный процессор от Microsoft.
К его достоинствам специалисты относят сравнительную легкость освоения. Как показывает практика, азами VBA могут овладеть даже пользователи, которые не имеют навыков профессионального программирования. К особенностям VBA относится выполнение скрипта в среде офисных приложений.
Недостатком программы являются проблемы, связанные с совместимостью различных версий. Они обусловлены тем, что код программы VBA обращается к функциональным возможностям, которые присутствуют в новой версии продукта, но отсутствуют в старой. Также к минусам относят и чрезмерно высокую открытость кода для изменения посторонним лицом. Тем не менее Microsoft Office, а также IBM Lotus Symphony позволяют пользователю применять шифрование начального кода и установку пароля для его просмотра.
Объекты, коллекции, свойства и методы
Именно с этими понятиями нужно разобраться тем, кто собирается работать в среде VBA. Прежде всего необходимо понять, что такое объект. В Excel в этом качестве выступают лист, книга, ячейка и диапазон. Данные объекты обладают специальной иерархией, т.е. подчиняются друг другу.
Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.
Что касается понятия «коллекция», то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.
Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.
Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в «Эксель» используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами (1,1) т.е. A1.
Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.
Как начать
Прежде всего требуется создать файл и сохранить его, присвоив имя и выбрав тип «Книга Excel с поддержкой макросов».
Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:
- в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
- выбирают команду Mudule;
- сохраняют, нажав на иконку с изображением floppy disk;
- пишут, скажем так, набросок кода.
Он выглядит следующим образом:
Sub program ()
‘Наш код
End Sub
Обратите внимание, что строка «’Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.
Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.
За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.
Пример 1
Задача: написать программу, которая будет копировать значение содержимое одной ячейки и затем записывать в другую.
Для этого:
- открывают вкладку «Вид»;
- переходят на пиктограмму «Макросы»;
- жмут на «Запись макроса»;
- заполняют открывшуюся форму.
Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.
Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.
Далее:
- вновь переходят на строку «Макросы»;
- в списке выбирают «Макрос 1»;
- нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).
В результате происходит действие, которое было осуществлено в процессе записи макроса.
Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.
Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.
Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.
Пример 2
Циклы VBA помогают создавать различные макросы в Excel.
Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x2 + 3×3 – cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.
За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.
Все примеры макросов VBA Excel создаются по той же процедуре, которая представлена выше. В данном конкретном случае код выглядит, как:
Sub programm()
x1 = 1
x2 = 10
shag = 0.1
i = 1
Do While x1 < x2 (цикл будет выполняться пока верно выражение x1 < x2)
y=x1 + x1^2 + 3*x1^3 – Cos(x1)
Cells(i, 1).Value = x1 (значение x1 записывается в ячейку с координатами (i,1))
Cells(i, 2).Value = y (значение y записывается в ячейку с координатами (i,2))
i = i + 1 (действует счетчик);
x1 = x1 + shag (аргумент изменяется на величину шага);
Loop
End Sub.
В результате запуска данного макроса в «Эксель» получаем два столбца, в первом из которых записаны значения для x, а во втором — для y.
Затем по ним строится график способом, стандартным для «Эксель».
Пример 3
Для реализации циклов в VBA Excel 2010, как и в других версиях, наряду с уже приведенной конструкцией Do While используется For.
Рассмотрим программу, которая создаст столбец. В каждой его ячейке будут записаны квадраты номера соответствующей строки. Использование конструкции For позволит записать ее очень коротко, без использования счетчика.
Сначала нужно создать макрос, как описано выше. Далее записываем сам код. Считаем, что нас интересуют значения для 10 ячеек. Код выглядит следующим образом.
For i = 1 to 10 Next
Команда переводится на «человеческий» язык, как «Повторять от 1 до 10 с шагом один».
Если ставится задача получить столбец с квадратами, например, всех нечетных чисел из диапазона от 1 до 11, то пишем:
For i = 1 to 10 step 1 Next.
Здесь step — шаг. В данном случае он равен двум. По умолчанию отсутствие этого слова в цикле означает, что шаг единичный.
Полученные результаты нужно сохранять в ячейки с номером (i,1). Тогда при каждом запуске цикла с увеличением i на величину шага автоматически будет расти и номер у строки. Таким образом, произойдет оптимизация кода.
В целом код будет выглядеть, как:
Sub program()
For i = 1 To 10 Step 1 (можно записать просто For i = 1 To 10)
Cells(i, 1).Value = i ^ 2 (т.е. в ячейку (i,1) записывается значение квадрата i)
Next (в некотором смысле играет роль счетчика и означает еще один запуск цикла)
End Sub.
Если все сделано правильно, в том числе запись и запуск макроса (см. инструкцию выше), то при его вызове каждый раз будет получаться столбец заданного размера (в данном случае состоящий из 10 ячеек).
Пример 4
В повседневной жизни сплошь и рядом возникает необходимость принять то или иное решение в зависимости от какого-то условия. Не обойтись без них и в VBA Excel. Примеры программ, где дальнейший ход выполнения алгоритма выбирается, а не предопределен изначально, чаще всего используют конструкцию If …Then (для сложных случаев) If …Then …END If.
Рассмотрим конкретный случай. Предположим, необходимо создать макрос для «Эксель», чтобы в ячейку с координатами (1,1) было записано:
1, если аргумент положительный;
0, если аргумент нулевой;
-1, если аргумент отрицательный.
Создание такого макроса для «Эксель» начинается стандартным способом, через использование «горячих» клавиш Alt и F11. Далее записывается следующий код:
Sub program()
x= Cells(1, 1).Value (эта команда присваивает x значение содержимого ячейки с координатами (1, 1))
If x>0 Then Cells(1, 1).Value = 1
If x=0 Then Cells(1, 1).Value = 0
If x
09 Мар 3 способа написать и оформить скрипт продаж
Давайте разберемся, как обычно создаются скрипты продаж?
В своей практике я обычно сталкиваюсь с 3 способами написания и оформления скриптов продаж. Давайте по порядку рассмотрим эти способы. Напишите в комментариях, используете ли Вы скрипты продаж и, если ДА, то каким именно способом Вы это делаете.
Первый способ. Скрипт «от руки».
Вы можете написать скрипт продаж (или хотя бы примерный сценарий общения с клиентом) на листочке, положить перед собой и использовать его как шпаргалку во время разговора с клиентом.
Это может выглядеть так:
Никаких затрат с Вашей стороны.
Но и эффективность таких скриптов оставляет желать лучшего:
- здесь не предусмотрены различные сценарии разговора и не прописана отработка возражений (а если прописать, это займет много места и затруднит использование скрипта);
- пользоваться таким скриптом может, пожалуй, только тот, кто его написал. Его сложно тиражировать на новых сотрудников;
- нет системного подхода к телефонным продажам, о котором я рассказываю на онлайн-тренинге 10 звонков — 10 продаж.
Этот способ может быть уместен, когда Вы делаете разовые звонки каким-то клиентам и, чтобы ничего не упустить, тезисно выписываете содержание разговора.
К сожалению, такой способ часто используется во многих компаниях малого и среднего бизнеса. Обычно это бывает, когда система телефонных продаж не настроена и менеджеры делают звонки как умеют и используют те инструменты, которые знают :-).
Второй способ. Скрипт продаж в офисных программах (Excel, Word и тд)
Более продвинутый и системный подход к внедрению скриптов продаж — это составление и использование скриптов в офисных программах, таких как Excel или Word (или аналогичных).
Вы можете прописать все возможные варианты возражений и отговорок клиентов, свою аргументацию и способы мотивации клиента принимать решение «здесь и сейчас» в одном файле, а потом с помощью создания гиперссылок автоматизировать скрипт.
В этом случае менеджеру будет удобно им пользоваться: услышал возражение — нажал на ссылку в скрипте — на экране появился ответ на это возражение.
Именно такой принцип создания скриптов я использовал в курсе Конструктор скриптов продаж. Я разобрал не только фразы и речевые обороты, которые повышают конверсию звонков, но и показал, как автоматизировать скрипт в обычном экселе.
Плюсы этого подхода в том, что Вам не нужно платить ежемесячную абонентскую плату за пользование сервисами. Скорее всего, у Вас и так есть Excel или Word — а это значит, что Вы можете один раз составить скрипт и начать использовать его всем отделом продаж.
Минусы — нет интеграции с CRM системами и телефонией.
Третий способ. Специальные сервисы «Конструкторы скриптов продаж»
В последнее время популярность набирают специальные сервисы, которые позволяют конструировать скрипты продаж. Обычно это происходит через веб-интерфейс.
Вы заходите на сайт сервиса — регистрируетесь — начинаете рисовать свой скрипт продаж.
Это может выглядеть вот так:
Возможно, картинка выглядит сложно, но на самом деле процесс создания скриптов продаж достаточно комфортен и позволяет даже новичку легко сориентироваться.
При использовании скрипта экран выглядит гораздо проще: есть фраза менеджера, есть варианты ответов клиентов. Менеджер слушает и нажимает на нужную кнопку.
Я протестировал некоторые сервисы конструкторы скриптов продаж и сделал для себя определенные выводы. В следующей статье я поделюсь с Вами и сделаю обзор некоторых сервисов по созданию скриптов, которые мне больше понравились.
Преимуществами таких сервисов, на мой взгляд, являются
- удобство создания скриптов (все наглядно, скрипт в буквальном смысле можно рисовать);
- удобство использования скриптов сотрудниками (даже новичок может легко сориентироваться);
- продвинутая аналитика работы со скриптом (Вы сможете отслеживать, на каком этапе чаще всего заканчивается разговор с клиентом, какие возражения вызывают затруднения, какая конверсия звонков у каждого сотрудника);
- интеграция с CRM системами и телефонией (многие конструкторы скриптов это поддерживают).
Как Вы понимаете, за такие удобства нужно платить. Обычно взимается ежемесячная абонентская плата за каждого менеджера, который пользуется системой.
В следующих статьях поподробнее расскажу о конструкторах скриптов продаж.
Напишите в комментариях, какими способами пользуетесь Вы в своей работе.
С уважением, Олег (дружить в ВК, инстаграм)
Полезные ссылки:
- 5 способов больше продавать по телефону — полезная статья с конкретными рекомендациями
- Видеокурс «Конструктор скриптов телефонных продаж» — это целый комплект материалов, подготовленный с одной целью — чтобы Вы могли за несколько часов создать полноценный скрипт продаж с учетом особенностей Вашего бизнеса.
- Видеокурс «Клоузер: всегда закрывай сделку» — система закрытия сделок и более 40 мощных техник помогут Вам закрывать больше сделок в любом бизнесе — от мелкой розницы до крупных корпоративных продаж.
- Бесплатный курс «Быстрый старт в продажах» — даже если Вы новичок в продажах, курс поможет Вам привлечь новых клиентов уже в течение 1 недели, построить системную работу и повысить профессионализм в области продаж.
- Бесплатный аудит Ваших продаж! Начните с аудита Ваших продаж! Это бесплатно и полезно. Я проверю более 50 точек роста Ваших продаж и вышлю Вам PDF отчет по результатам аудита в течение 5 дней.
- Youtube канал «ПораРасти» – подписывайтесь сейчас, чтобы получать доступ к новым материалам первыми;
- Группа в ВК «ПораРасти» – сообщество для тех, кто хочет продавать красиво и легко, развивать собственный бизнес, приносить людям реальную пользу, а не заниматься впариванием. Присоединяйтесь сейчас! Здесь много бесплатных материалов, PDF и т.д.
Hey, Insider community! I’m Nancy Wang, a Program Manager on the Office Scripts team. Up until now, Office Scripts could only be used in Excel for the web—I’m excited to announce that you can now run your scripts in Excel for Windows with the simple click of a (script) button!
Run Office Scripts using a button
We heard you! Your feedback helped us make the decision to bring script buttons to Windows. Since releasing Office Scripts, we have heard you’d like a way to share scripts with colleagues, as well as the ability to use scripts in Excel for Windows.
With script buttons becoming available in Excel for Windows, we move one step closer to making Office Scripts an automation solution that you can use to manage your workflow anytime and anywhere. While you still need to use Excel for the web to create and manage your scripts, we recognize that Excel users utilize a variety of platforms to complete their tasks. So we intend to investigate more cross-platform investments as part of our future work.
How it works
To create a script button in your workbook:
- In Excel for the web, open a workbook to which you want to add a script button.
- On the Automate tab, select a script. NOTE: if you don’t have an existing script available, you can select the More Scripts button and make a copy of one of the sample scripts.
- In the Code Editor pane, select the More options (…) button, and then click Add button.
- To move or customize the script button that appears, right-click it or select the Shape tab, and then make the changes you want.
To run a script button in your workbook:
- In Excel for Windows, open the file that contains the button you added using Excel for the web.
- Select the script button to run the automated actions.
Tips and tricks
To view a script assigned to a button, right-click the button and select View script.
Known issues
Right-clicking a button and selecting View script may open two panes—one containing the script’s details (as expected), and another that appears to be loading something. You can safely ignore or close the second pane.
Requirements
In order to use this feature, you must:
- Have a commercial license for Microsoft 365.
- Install and run webview2. Learn more
Availability
The feature is rolling out to Office Insiders running Beta Channel Version 2202 (Build 14922.20000) or later.
Don’t have it yet? It’s probably us, not you.
Features are released over some time to ensure things are working smoothly. We highlight features that you may not have because they’re slowly releasing to larger numbers of Insiders. Sometimes we remove elements to further improve them based on your feedback. Though this is rare, we also reserve the option to pull a feature entirely out of the product, even if you, as an Insider, have had the opportunity to try it.
Feedback
If you have any feedback or additional suggestions for improvements, please select Help > Feedback in Excel for Windows to let us know.
Learn what other information you should include in your feedback to ensure it’s actionable and reaches the right people. We’re excited to hear from you!
Sign up for the Office Insider newsletter and get the latest information about Insider features in your inbox once a month!
Office Scripts are an online version of VBA. Built to run in Excel online, it is similar to GoogleDocs App Scripts, but based on TypeScript instead of JavaScript (But as TypeScript is a subset of JavaScript, you can use JavaScript as well).
https://learn.microsoft.com
One of the most powerful things about Office Scripts is that they can be called by Power Automate, so they can run without any human interaction. If you want to know about Office Scripts from the Power Automate side I have done a sister article, that has same basics as this article, but the additional features/steps required in Power Automate.
In this article i’m going to cover:
- Accessing Scripts
- Triggering Scripts
- Intellisense
- Variables, Types and Interfaces
- Get & Set
- Basic Excel Actions
- If
- Loop
- API
- Additional Functions
Accessing Scripts
In Excel online you will see an Automate tab in the ribbon bar. The Ribbon allows you to record actions (just like vba), Create a blank New Script, Open existing Scripts and Automate a task with a Power Automate template.
The record function does not record every action, and uses selections instead of references, but it does show good notes and is a good way to learn.
Triggering Scripts
Office Scripts can be run by selecting them in the Automate tab, or by adding a button.
Office Scripts by default are stored on your OneDrive, in Documents/Office Scripts folder, though they can be shared with a file by clicking Share in the same menu as adding a button. This then attaches the script to the file, so anyone with the file can run the script.
Intellisense
Intellisense is auto complete for code, as you type in the function you want Office Scripts will try and guess what you are typing by listing all possible options. This is great not only for speeding up you typing but can be used as a reference to find the function you are looking for.
Variables, Types and Interfaces
This is where anyone with TypeScript knowledge can start jumping ahead. Variables are declared with ‘let’, and need to declare type (must have value set against them).
let sString="";
let iNumber=0;
let bFlag=false;
Enter fullscreen mode
Exit fullscreen mode
We can also declare objects, like workbooks, worksheets, images, ranges and more to variables, to make them easier to use and update.
function main(workbook: ExcelScript.Workbook) {
let ws=workbook.getWorksheet("Sheet1");
ws.setName("test");
}
Enter fullscreen mode
Exit fullscreen mode
Variables are scoped locally, so a variable declared in the function is scoped to the function, a variable declared inside a loop is scoped to the loop, and cant be read outside of the loop.
When declaring an array you have 2 options, an empty array and structured.
Empty arrays are for simple arrays with no objects within them, if you need an object then you should use an interface to set the structure.
function main(workbook: ExcelScript.Workbooklet){
aSimple=[]=[];
let aStructured:schema[];
}
interface schema {
stringField: string,
numberField: number,
booleanField: boolean
}
Enter fullscreen mode
Exit fullscreen mode
As you can see you declare the interface outside of the function, and it creates the schema for the array, so aStructure will look like this:
[
{stringField:"test",numberField:1,booleanField:false},
{stringField:"test2",numberField:2,booleanField:true}
]
Enter fullscreen mode
Exit fullscreen mode
where as aSimple would be something like:
[1,2,3,4,5,6,7,8]
Enter fullscreen mode
Exit fullscreen mode
A type is almost interchange with an interface, with the differences not really present in Office Scripts. So you can use a type instead of an interface, but most Microsoft documentation uses interface.
type dataType = {
data: JSONData[],
name: string
}
Enter fullscreen mode
Exit fullscreen mode
Get & Set
As you saw with getWorkSheet(«Sheet1»), get is used to reference something, to either store as variable or to complete an action against e.g. setValue(). It can get not only parts of the workbook, but parameters to them, like worksheet name.
So you get your worksheet, get your range, then you set your range. That can be a formula (setFormula) or value (setValue), and can be one cell or a range (setValues).
So in below example we are going to copy a filtered list from one sheet to another.
function main(workbook: ExcelScript.Workbook) {
let ws=workbook.getWorksheet("summary");
let i=0;
let aNewRange=[]=[];
let rng=ws.getUsedRange().getValues();
aNewRange.push(rng[0]);
for(i==0;i<rng.length; i++){
if(rng[i][0]==3){
aNewRange.push(rng[i]);
}
}
workbook.getWorksheet("Sheet2").getRange("A1:e"+aNewRange.length).setValues(aNewRange);
}
Enter fullscreen mode
Exit fullscreen mode
You may think the best approach would be to filter the excel data, then copy and paste. But it is better to grab the whole range, filter it, then paste set the range to the filtered values.
let rng=ws.getUsedRange().getValues();
— gets values from range
aNewRange.push(rng[0]);
— adds header row
for(i==0;i<rng.length; i++){
— loop over rows in the array
if(rng[i][0]==3){
— if condition
aNewRange.push(rng[i]);
— add row to array
workbook.getWorksheet("Sheet2").getRange("A1:e"+aNewRange.length).setValues(aNewRange);
— sets array to range
You could also set the range row by row in the loop, but this can have a big impact on performance. For any interactions with the Excel file uses api calls, so we should avoid placing them in loops where ever possible.
Basic Excel Actions
As you would expect, you can interact with the Excel workbook. The list below gives a few examples, based on a worksheets assigned to ws and wsPivot variables.
As you would expect, you can interact with the Excel workbook. The list below gives a few examples, based on a worksheets assigned to ws and wsPivot variables.
let ws= workbook.addWorksheet("test");
— Add worksheet called test
ws.delete();
— Delete worksheet
let chartName = selectedSheet.addChart(ExcelScript.ChartType.pie, selectedSheet.getRange("A1:C15"));
— Insert chart on sheet selectedSheet
let newPivotTable = workbook.addPivotTable("PivotTableName", ws.getRange("A1:C15"), wsPivot.getRange("A2:C16"))
— Add a new pivot table on sheet3
newPivotTable.refresh();
— Refresh newPivotTable
ws.getAutoFilter().apply(ws.getAutoFilter().getRange(), 0, { filterOn: ExcelScript.FilterOn.values, values: ["1"] });
— Apply values filter of 1 to range
ws.getRange("A1:C4").getFormat().getRangeBorder(ExcelScript.BorderIndex.edgeBottom).setWeight(ExcelScript.BorderWeight.thin);
— Add thin border to bottom of range
ws.getRange("A1:C4").getFormat().getFill().setColor("FFFF00");
— Set fill color to FFFF00 for range
ws.getRange("A1:C4").removeDuplicates([0], false);
— Remove duplicates from rangeG9:G39
ws.getRange("F:F").insert(ExcelScript.InsertShiftDirection.right);
— Insert column F:F, move existing cells right
ws.getRange("F:F").delete(ExcelScript.DeleteShiftDirection.left);
— Delete column F:F
ws.getRange("3:3").insert(ExcelScript.InsertShiftDirection.down);
— Insert at range 39:39, move existing cells down
ws.getRange("3:3").delete(ExcelScript.DeleteShiftDirection.up);
— Delete row 39:39
ws.getRange("A1:C4").getFormat().getFill().setColor("FFFF00");
— Set fill color to FFFF00 for range
ws.getRange("A1:C4").removeDuplicates([0], false);
— Remove duplicates from range G9:G39
ws.getRange("F:F").insert(ExcelScript.InsertShiftDirection.right);
— Insert column F:F, move existing cells right
ws.getRange("F:F").delete(ExcelScript.DeleteShiftDirection.left);
— Delete column F:F
ws.getRange("3:3").insert(ExcelScript.InsertShiftDirection.down);
— Insert at range 39:39, move existing cells down
ws.getRange("3:3").delete(ExcelScript.DeleteShiftDirection.up);
— Delete row 39:39
If
If is a fundamental action in all coding, luckily Office Scripts leverage TypeScript/JavaScript so its nice and simple.
if(rng[i][0]==3){
aNewRange.push(rng[i]);
} else {
console.log("Not a 3");
}
Enter fullscreen mode
Exit fullscreen mode
if (condition){//if true do}else{//if false do). As you can see the logic is different to Excel, so equals is == (=== also matches type, so 1==»1″ is true, 1===»1″ is false). Not equals is !=, greater then and less then are standard (> , < >=, <=). You can also just pass a boolean in or an array to see if it is not empty.
let bFlag=true
if(bFlad){
console.log("its true");
}
Enter fullscreen mode
Exit fullscreen mode
Loops
As always there are a few ways to action a loop, the 2 I recommend are forEach and for. You have seen the for already.
for(i==0;i<rng.length; i++){
//do something
}
Enter fullscreen mode
Exit fullscreen mode
for(counter = start; till counter less then value; step by +1). In the example im starting at 0 (the first item in an array is 0 not 1) and im looping until i is the rng length (number of rows), and each loop im stepping +1 (so 1— would step backwards, 10++ would increase 10 each loop).
To reference parts of an array you use the [], so array[0] is the first item in the array. Additionally if its a 2 dimensional array (like a table with rows and columns), you can use [][], so array[1][0] is second row, first column.
The other useful loop is the forEach loop, here you don’t need to hand the counter/index of the array, you can reference the item. In the below example I have named the item ws, but you can change it for anything (generally I just use item).
workbook.getWorksheets().forEach(ws =>
console.log(ws.getName())
)
Enter fullscreen mode
Exit fullscreen mode
Above we are looping of all worksheets in the workbook. Then we are logging the worksheets name.
API
This is where Office Scripts can get more powerful, it can extend beyond the workbook and interact with API’s (this can even be other workbooks with the graph api).
async function main(workbook: ExcelScript.Workbook) {
let iRows = 0;
let aTemp=[]=[];
const myHeaders = new Headers({'app-id': '############'});
const myInit = {
method: 'GET',
headers: myHeaders
};
let fetchResult = await fetch('https://dummyapi.io/data/v1/user?limit=10',myInit);
let oData: dataType = await fetchResult.json();
let json: JSONData[] = oData.data;
json.forEach(item =>
aTemp.push([item.id, item.title, item.firstName, item.lastName,item.picture])
);
iRows = json.length;
workbook.getWorksheet('Sheet1').getRange('A2:E' + (iRows+1)).setValues(aTemp);
}
interface JSONData {
id: number,
firstName: string,
lastName: string,
title: string,
picture: string
}
interface dataType = {
data: JSONData[]
}
Enter fullscreen mode
Exit fullscreen mode
To get an app id and use code sign up for free at https://dummyapi.io/
So the main change is now we are using async function instead of function Main. After that we are using standard JavaScript await fetch().
const myHeaders = new Headers()
— create header, like content type, auth, etc
const myInit()
— config call, GET/POST/DELETE/PATCH/PUT and add header
let fetchResult = await fetch()
— store response in fetchResult
let oData: dataType = await fetchResult.json();
— wait for resposne, and store as oData (the response as a parent data object so we set oData to dataType)
let json: JSONData[] = oData.data;
— set the data array in json variable
json.forEach(item =>aTemp.push([item.id, item.title, item.firstName, item.lastName,item.picture]));
— Loop over every row and add to simple 2 dimensional array
One thing to be aware of is API’s can’t be called if Script is ran by Power Automate, and there is no way to secure you auth credentials.
Additional functions
As I said, Office Scripts are TypeScript/JavaScript, so most JavaScript functions also work, a couple of recommend ones are:
Sort Array
if(sortType=="Number"){
sortArray = data.sort((a, b) => {
if (direct=="asc"){
return a.ID - b.ID;
}else{
return b.ID - a.ID;
}
});
} else{
if (direct == "asc") {
sortArray = data.sort((a, b) => a.ToSort.localeCompare(b.ToSort));
}else{
sortArray = data.sort((a, b) => b.ToSort.localeCompare(a.ToSort));
}
};
Enter fullscreen mode
Exit fullscreen mode
Above we are showing the way to sort by Number vs String, and how to do Ascending or Descending (data is input — unsorted array, sortArray is output — sorted array).
Filter Array
let filteredArray=data.filter((item, index) =>
return item.Field > 100
)
Enter fullscreen mode
Exit fullscreen mode
Above we are filtering any row where the Field column is greater then 100 (data is input — unfiltered array, filteredArray is output — filtered array).
Regex
Regular expressions allow you to extract (find) strings from other strings, using patterns (so not just an exact match)
let regEx = new RegExp(rgex, flag);
let aMatches = inputString.match(regEx);
if (aMatches) {
console.log("Regex found matches");
}
Enter fullscreen mode
Exit fullscreen mode
For more info on regexs I recommend this website https://regex101.com/