Общие сведения

(По мотивам сообщения пользователя Machestro в http://visio.getbb.ru/viewtopic.php?f=29&t=1429).

Обычно Excel по отношению к Visio рассматривается в качестве источника данных. Тем не менее, обратный канал тоже существует. Он используется либо для формирования отчетов по документам Visio, либо при двусторонней синхронизации данных с источником. Для формирования отчетов как правило используется либо штатный формирователь отчетов, либо специализированные программные решения, создаваемые под конкретную задачу. Причем возможности формирователя отчетов достаточно ограничены.

Однако с появлением в Power Query функции доступа к архивированным файлам (см. http://sql10.blogspot.com/2016/06/reading-zip-files-in-powerquery-m.html) Visio получает еще один и очень неплохой способ формирования отчетов. Ведь если документ Visio представляет собой пакет из нескольких заархивированных XML файлов, а Power Query способен выбирать данные из XML, в том числе и из нескольких файлов, то нет препятствий к тому, чтобы пользователь Excel получил доступ к данным из файла Visio. Причем для этого даже не требуется установленный Visio. Только файл документа и Power Query.

Если макрос делается не для одного документа, то рано или поздно придется столкнуться с задачей его обновления. Пришла в голову умная мысль, улучшили макрос в одном из документов и возникает вопрос - а что делать с остальными? В них-то тоже хорошо бы провести изменение. Иногда задача еще усложняется - документы могут быть разбросаны по разным машинам и даже по разным организациям.

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

В статье "Автоматизация масштабирования документа" я рассказал о том случае, когда нужно было масштаб документа подстроить под рисунок. Но бывает необходимость и в обратной операции, когда масштаб рисунка жестко задан, а нужно подстроить размеры картинки.

В следующей задаче нужно было отрисовать корабль (палубу). Исходная картинка (хоть и сделана с чертежа) поступает в виде PDF, то есть ни о каком масштабе можно и не говорить. В Visio она перенесена в виде скриншота с фрагмента PDF документа.

Задача - изменить размеры картинки.

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

На входе имеется фотография дома. Напрашивается решение - импортировать в Visio картинку, нарисовать на ней гирлянды и подсчитать длину.