Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

Программирование

Основой программирования в Visio является объектная модель. В виде картинки доступна объектная модель Visio 2002.

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

Обычно для каждой версии создается свой SDK (Software Development Kit), в котором можно получить наиболее точные сведения. Адреса для загрузки:

Visio 2013 SDK download

Visio 2016 SDK download

Перечень литературы

16.02.2022  Объектная модель Visio   неизвестный    

16.02.2022  Visio object model overview   неизвестный    

22.02.2021  Using the CALLTHIS function in Visio   David Parker    

10.12.2019  плейлист VISIO+VBA: Теория   Vigil   Видео 

10.12.2019  плейлист VISIO+VBA: Практика   Vigil   Видео 

07.06.2019  Локализация и разделители в Visio   Геннадий Туманов    

31.07.2018  Enhancing the Built-In Containers in Visio   David Parker    

10.12.2016  Opening an MS Access form from a Visio shape   David Parker    

07.07.2015  Deleting Visio Shapes Programmatically   Chris Roth    

14.06.2014  Embed a Microsoft Visio Viewer 2002 Control in a Web Page   Microsoft    

14.06.2014  Preventing Multiple Undo-Redo Units When Triggering an Add-on from the EventXFMod Cell in Visio 2002   Microsoft    

14.06.2014  Changes in the RUNADDON Function and the AddOnName Property for Visio 2002   Microsoft    

21.05.2013  Getting the Name of Glued Connection Points   David Parker    

28.08.2012  Checking a Visio Shape for Cell Errors   David Parker    

14.03.2011  How to Run VBA Macros from a Ribbon Button in Visio 2010   David Parker    

20.04.2010  Controlling the pencil mode programmatically   David Parker    

02.11.2009  New Enumerations for Visio 2010   Visimation    

03.08.2009  Re-opening Default Stencils   David Parker    

20.05.2009  VBA Class Property Generator   Chris Roth    

17.01.2009  Visio Viewer Developer Reference Released   David Parker    

25.09.2008  Программирование в Visio   Геннадий Туманов   Из серии статей об автоматизации. Создание первой программы в Visio. Объектная модель и способы идентификации шейпов. Пример программы получения каталога трафарета. 

25.09.2008  Введение в автоматизацию Visio   Геннадий Туманов   Вводная статья из запланированной серии статей о Visio и автоматизации. Определяется предметная область для данной серии, приводится предполагаемый перечень статей. 

17.05.2008  Detect Sub-selected Shapes Programmatically   Chris Roth    

25.02.2008  Edit Visio Masters Programmatically…the Right Way!   Chris Roth    

01.01.2008  Visio tips & tricks for Interaction Designers   Martijn van Welie    

17.05.2007  VBA Macro Security   Chris Roth    

13.09.2006  Create Visio Flowcharts Programmatically   Chris Roth    

22.09.2004  Visio Development Top Five Performance Tips    Mai-lan   (англ.) Пять главных советов разработчику по повышению производительности 

22.09.2004  Top Ten Things to Know When Using the Visio 2003 ActiveX Control   Mai-lan   (англ.) Десять основных причин использовать Visio 2003 ActiveX Control 

  Visio Enumerations   John Goldsmith    

Ответы на вопросы

Как из Visio из процедуры на VBA получить доступ к листу в книге Excel?

Как из Visio из процедуры на VBA получить доступ к листу в книге Excel? Так же интересует обратная проблема Генерация файла Excel из Визио  

Sub ReadExcel() Dim ExcelObject As Object Set ExcelObject = CreateObject("Excel.Application") ExcelObject.Workbooks.Add ' Добавляем новую книгу ExcelObject.Workbooks.Open FileName:="C:\Work\Opis.xls" ' Открываем файл ExcelObject.Visible = True ' делаем excel видимым ExcelObject.Range("A1", "A1").Value = "Test:" ExcelObject.Range("A1", "A1").HorizontalAlignment = 1 ExcelObject.Range("A1", "A1").VerticalAlignment = 2 ExcelObject.Range("A1", "A1").WrapText = 1 ' ExcelObject.Quit ' для закрытия excel End Sub  

Соответственно можно только открыть какой-то файл или только создать пустую книгу. Остальные команды и форматы записи управления Excelем можно узнать используя запись макросов в самом Excel, а затем посмотрев текст в редакторе VBA.  

Как определить размер (длину в мм) текстовой строки?

Подскажите, как определить размер (длину в мм) текстовой строки, а не размер шейпа в котором она написна. Нужно для функции на VBA.  

На основе примера из документации:  

Sub Text_width() Dim shpObj As Visio.Shape Set pagsObj = ThisDocument.Pages Set pagObj = pagsObj.Item(1) Set selectObj = ActiveWindow.Selection Set shpObj = ActiveWindow.Selection.Item(1) shpObj.Text = "Text here" 'пишем текст в фигуру или оставляем shpObj.AddSection visSectionUser 'добавляем раздел shpObj.AddRow visSectionUser, visRowUser + 0, 0 'добавляем строку Set celObj = shpObj.Cells("User.Row_1") 'назначаем ячейку celObj.Formula = "TEXTWIDTH(TheText)" 'забиваем формулу TextWTH = celObj.Result(visMillimeters) 'забираем результат MsgBox TextWTH, , "Text width" 'показываем результат End Sub  

Как из скрипта можно установить единицу измерения?

Есть какая то заморочка с дюймами... вообще хочу работать с см, поэтому меняю для странички в Page setup inches на cm все вроде ок.. Потом, при расстановке фигур по страничке не могу разобраться в чем идет расчет, например: elements(0).SetBegin x / 2.54, (2 + Kcell_total(0) / step) / 4.54 при значении Kcell_total(0)=4241, x=2 начало получается расположенным в точке (2;4,5) - каким образом.... не могу понять и попутно как из скрипта можно установить единицу измерения для pages или для page..  

Единица измерения переключается масштабом  

ActivePage.PageSheet.Cells("PageScale").Formula = "1 cm" ActivePage.PageSheet.Cells("DrawingScale").Formula = "1 cm"  

переведет в см, а  

ActivePage.PageSheet.Cells("PageScale").Formula = "1 in" ActivePage.PageSheet.Cells("DrawingScale").Formula = "1 in"  

переключит в дюймы. Но вводите данные Вы все равно в дюймах, поэтому (2дюйма)/2.54 дает 2 см и отстоит на 2 клеточки от края листа, если единицу измерения установили см. (по Y Вы не сообщили значение step). Короче, видеть Вы будете в см, а вводить в дюймах.