Автоматический анализ блок-схем SmartArt в MS EXCEL (парсинг)

history

Построим с помощью SmartArt EXCEL иерархическую схему и автоматически проведем ее анализ с помощью программы VBA.

Идея статьи следующая:

  • С помощью инструмента SmartArt построим блок-схему, отображающую некую иерархию
  • Напишем программу на VBA, которая пронумерует все элементы схемы и заполнит таблицу, полностью описывающую схему.
  • Таблица послужит исходной информацией для построения другой программы, например моделирующей производственный процесс или организационную схему

Данная статья является продолжением идей из статьи про построение произвольной блок-схемы, описывающей некоторые связи между элементами.

Построение шаблона схемы

Построим схему с помощью стандартного инструмента SmartArt в EXCEL.

Выберем тип Иерархия, подтип Организационная диаграмма. На листе автоматически появится вот такая заготовка.

Выделите схему и добавьте стандартными средствами через меню Конструктор нужные элементы, названия им не присваивайте.

Программа на VBA 

В файле примера содержится небольшая программа для автоматического анализа схемы SmartArt.

Нажав на листе кнопку Анализ схемы, программа сделает следующее:

  • присвоит каждому элементу номер
  • элементы, которые не имеют предшественников (элементов более низкого уровня), зальет зеленым цветом
  • заполнит таблицу с информацией о схеме

Ниже приведено описание результата работы программы и ограничений схемы:

  • Левая часть номера элемента - это уровень элемента в иерархии.
  • Правая часть - последовательный номер элемента. Нумерация элементов соответствует порядку их обхода в схеме
  • Элементы не имеющие предшественников выделяются в схеме и таблице зеленым цветом
  • Элемент уровня выше - всегда один (это соответствует типу схемы Иерархия)
  • Максимальный уровень иерархии - 9 (это соответствует последовательности элементов максимальной длины)
  • Максимальное количество элементов - 20
  • Данные об элементах и их связях заносятся в таблицу

Примечание: Парсинг других типов SmartArt (процесс, цикл) также работает, но на листе должна быть только 1 SmartArt

Таблица

Основная информация о схеме выводится в таблицу.

 Строки соответствуют элементам, зеленым цветом выделены строки для зеленых элементов, не имеющих элементов ниже по иерархии.

Номера элементов на один уровень ниже выведены в одной ячейке и содержатся в текстовой строке. Разделитель номеров - символ "-". Для вывода номера нужного элемента используйте формулу типа =ПСТР(R17;R10*5-4;4), приведенную в файле примера.

 

 


© Copyright 2013 - 2022 Excel2.ru. All Rights Reserved